برمجة

APK hazırla

ما هو APK؟

APK هو الملف الذي يثبّته هاتف Android. بداخله الشاشة والصور والكتابة والكود الذي يحتاجه التطبيق ليعمل. المتجر يفتح هذا الملف غالباً عنك. إذا حفظته وفتحته بنفسك فقد يطلب الهاتف صلاحية إضافية.

APK ليست لغة برمجة. هي حزمة التطبيق الجاهز. الداخل قد يكون Kotlin أو Java أو Flutter أو صفحة ويب فقط. من الخارج كلها تنتهي بـ .apk.

قد لا يكون APK القادم من صفحة لا تعرفها النسخة الحقيقية للتطبيق. الملف الذي تجمعه من موقعك أو من zip خاص بك شيء آخر. كتابة apk في الاسم لا تدل على أن الملف آمن.

كيف يُصنع APK؟

أولاً يُكتب ماذا سيفعل التطبيق. ثم تُبنى الشاشة. ثم تصير تلك الشاشة ملفات. في الأخير يجمع برنامج هذه الملفات في APK واحد. الهاتف يثبّت ذلك الملف الواحد.

أقصر طريق هو صفحة ويب. يُعطى zip فيه index.html إلى Nibras Studio وهو يحوّله إلى APK. Android Studio والحساب ودرس الكود ليست لازمة لهذا الطريق. الصفحة تُفتح في نافذة تطبيق على الهاتف.

الطريق الأطول هو برنامج يعمل على الهاتف نفسه. عندها تأتي المجلدات وmanifest وخطوة التوقيع. APK ما زال ملفاً واحداً في الأخير، لكن الوصول إليه يحتاج أدوات أكثر.

ماذا يلزم؟

ليس كل نوع يطلب الأداة نفسها. إذا حوّلت موقعاً إلى تطبيق فمتصفح ومحرر نص وzip تكفي. الهاتف نفسه هو الفحص. Nibras Studio يقوم بالجمع.

التطبيق الأصلي بـ Kotlin أو Java يحتاج Android Studio وJDK وAndroid SDK. Gradle يجمع الحزمة. Capacitor يحتاج Node وnpm أيضاً لأن الصفحة تقف أولاً في مجلد الويب ثم تنتقل إلى مجلد android. Flutter يحتاج Flutter SDK الخاص به.

  • APK الويب: محرر، متصفح، zip، Nibras Studio
  • الأصلي: Android Studio وJDK وAndroid SDK وGradle
  • Capacitor: Node وnpm وAndroid SDK ومجلد android
  • Flutter: Flutter SDK ومجلد android

مراحل الصنع

تخطي مرحلة يعطي تطبيقاً فارغاً في الأخير. أنهِ شاشة واحدة ثم أضف الثانية. لكل مرحلة ملفها.

  1. اكتب العمل في جملة: ماذا يحفظ التطبيق أو ماذا يُظهر.
  2. انظر إلى الشاشة على ورق أو في المثال الأسود في هذه الصفحة. عنوان وسطر وزر تكفي.
  3. ضع الملفات في مجلد ذلك النوع. للويب يجب أن يقف index.html في الجذر.
  4. افتحه على حاسوبك. افحص صفحة الويب في المتصفح والتطبيق الأصلي في المحاكي أو على الهاتف.
  5. اجمع APK. إذا كان zip ويب فأعطه إلى Studio. إذا كان أصلياً فـ Gradle يستدعي assemble.
  6. ثبّته على الهاتف واضغط الزر. أصلح الكتابة التي لم تعمل ثم اجمع مرة أخرى.

أنواع APK

APK الويب

هذا وضع الموقع في نافذة الهاتف. الداخل HTML وCSS وجافاسكريبت. Python الذي يعمل على الخادم لا يُفتح هنا بنفسه. index.html يجب أن يكون في جذر الـ zip. مجلدا css وjs يقفان بجانبه. الصورة تقع في img. يأخذ Nibras Studio هذا الـ zip أو عنوان الموقع، ويُختار الاسم والأيقونة واسم الحزمة، ويُجمع APK.

qeyd/
  index.html
  css/app.css
  js/app.js
  img/icon.png

المثال الجاهز بهذا الشكل. نزّل الـ zip من الأسفل، وافتح index.html إذا أردت تغيير سطر، ثم أعطه إلى Studio.

APK الأصلي

يُكتب بـ Kotlin أو Java. الشاشة هي ملف xml داخل res/layout. عمل الزر في ملف java أو kotlin. الأيقونة في مجلدات mipmap. AndroidManifest.xml يقول اسم التطبيق والحزمة وشاشة الفتح. Android Studio يفتح هذه المجلدات بنفسه. الجمع يجري عبر Gradle. هذا النوع يُختار للكاميرا والمستشعر والعمل العميق على الهاتف. هو ثقيل لصفحة ملاحظات صغيرة.

app/src/main/
  AndroidManifest.xml
  java/com/example/qeyd/MainActivity.kt
  res/layout/activity_main.xml
  res/mipmap-hdpi/ic_launcher.png

تذكر سطر app/src/main. الـ manifest والشاشة والأيقونة تقف تحت ذلك السطر.

APK Capacitor

الصفحة تبقى في مجلد www. capacitor.config.json يقول كيف يدخل الموقع إلى التطبيق. مجلد android هو القشرة الأصلية. أنهِ الصفحة في www أولاً، ثم يحدّث Capacitor مجلد android، ويُجمع APK من مشروع android ذلك. Node وAndroid SDK كلاهما لازمان. هذا خطوة بعد APK الويب: يمكن لمس الهاتف بإضافتك.

www/
  index.html
capacitor.config.json
android/app/src/main/
  AndroidManifest.xml

www هو الموقع. android هو القشرة. تغيير واحد ونسيان الآخر يضع الشاشة القديمة على الهاتف.

APK Flutter

الشاشة تُكتب بلغة Dart داخل lib/main.dart. pubspec.yaml قائمة الحزم. مجلد android ما زال القشرة، لكن HTML لا يمسك الصفحة. Flutter يرسم الشاشة بنفسه. المشروع لا يُفتح قبل تثبيت SDK. المجلدات تبدو قليلة لكن الأداة تُتعلّم وحدها.

lib/main.dart
pubspec.yaml
android/app/src/main/
  AndroidManifest.xml

lib هو الشاشة نفسها. android قشرة الهاتف فقط. APK يخرج بـ flutter build apk.

ماذا يقف داخل APK؟

APK في الحقيقة أرشيف باسم آخر. الاسم ينتهي بـ .apk لكن الداخل مجلدات وملفات. الهاتف يفتح ذلك الملف الواحد ويفحص التوقيع ثم يشغّل البرنامج الذي بداخله. تغيير الداخل وإغلاقه من جديد لا يجعل التطبيق لك. ينكسر التوقيع ويرفض الهاتف الملف.

قد يبدو ملفان APK متشابهين من الخارج. أحدهما يمسك صفحة والآخر يمسك شاشات كثيرة وصوراً ومكتبات. الحجم يكبر من الصور والأدوات المضافة لا من طول الجملة.

  • AndroidManifest.xml يقول اسم التطبيق والحزمة وشاشة الفتح والصلاحيات التي قد يطلبها.
  • classes.dex هو البرنامج الذي يشغّله الهاتف. Kotlin وJava يصيران هذا عند الجمع. في APK الويب المنطق الخاص أقل والصفحة تقف وحدها.
  • مجلد res يمسك الصور والكتابة وترتيب الشاشة.
  • resources.arsc جدول يقول أي اسم مربوط بأي صورة وكتابة.
  • META-INF هو التوقيع. إذا تغيّر ملف في الداخل ولم يُجدَّد التوقيع يتوقف التثبيت.
  • في APK الويب يقف الموقع نفسه في assets أو مجلد يشبهه. النافذة تفتح تلك الملفات.

لماذا الصلاحيات؟

وجود APK على الهاتف لا يفتح الكاميرا ولا جهات الاتصال ولا المكان وحده. الـ manifest يكتب فقط ماذا قد يطلب التطبيق. الشخص يعطي الموافقة غالباً حين تُفتح تلك الشاشة أول مرة. بلا موافقة ذلك العمل لا يمضي وباقي التطبيق قد يبقى.

اطلب فقط ما تستعمله الشاشة. تطبيق الملاحظات لا يحتاج الميكروفون. الخريطة تحتاج المكان. الشاشة التي تكلّم الخادم تحتاج الإنترنت. الصلاحية الزائدة تخيف الشخص وتثير سؤالاً في مراجعة المتجر.

إذا فتح APK الويب موقعك فالإنترنت لازم. الكاميرا لا تأتي وحدها. يجب أن يطلبها الغلاف والصفحة معاً وأن يوافق الشخص. اترك الصلاحية على شاشة الكاميرا لا في أول فتح.

Debug وrelease وAAB

APK التجريبي للاختبار. ملف APK الذي يجمعه Nibras Studio موقّع توقيعاً تجريبياً. يمكن تثبيته على هاتفك وتجربة الزر. المتجر عادة لا يقبل هذا الملف كإصدار أخير. يمكن إعطاؤه لصديق للاختبار وقد يُظهر الهاتف تحذيراً عن مصدر غير معروف.

APK الإصدار يُوقَّع بمفتاحك. ذلك المفتاح يُظهر أن التحديث التالي جاء منك. إذا ضاع المفتاح لا تستطيع وضع ملف جديد فوق التطبيق نفسه. اسم حزمة جديد يُحسب تطبيقاً آخر ويقف بجانب القديم.

versionCode عدد صحيح. يجب أن يكبر في كل ملف جديد. versionName هو الاسم الذي يراه الإنسان مثل 1.2. إذا لم يكبر العدد فالهاتف لا يضع الجديد مكان القديم.

AAB هو الحزمة التي يريدها المتجر غالباً. APK هو الملف الذي يثبّته الهاتف. المتجر قد يقسم AAB إلى ملفات APK صغيرة حسب نوع الهاتف. إذا ثبّت بنفسك فيجب أن يكون في يدك APK.

ما هو APK المتقدّم؟

APK البسيط شاشة واحدة. يحفظ سطراً على الهاتف. لا يعرف من الشخص. إذا أغلقته وفتحته فالسطر في مكانه وهذا يكفي. الملاحظة والعدّاد وصفحة الزر الواحد من هذا النوع. يمكن جمعه في يوم.

APK المتقدّم شاشات كثيرة. فيه حساب. البيانات يجب أن تظهر على هاتف آخر. القائمة تأتي من الإنترنت. تُرسل صورة. قد يصل إشعار والتطبيق مغلق. شخصان يريان التغيير نفسه. هذا لم يعد صفحة مضغوطة في ملف. الهاتف والخادم والبيانات المحفوظة تعمل معاً.

التطبيق المتقدّم لا يبدأ كبيراً في اليوم الأول. تنتهي الشاشة البسيطة أولاً. ثم تأتي شاشة ثانية. ثم ينتقل الحفظ إلى الخادم. ثم الدخول. كتابة كل هذا في اليوم الأول يعطي قشرة فارغة: أزرار بلا عمل.

في طريق الويب الجزء الصعب غالباً هو الموقع نفسه. الدخول والقائمة والخادم على الموقع. APK مجرد نافذة. يستطيع Nibras Studio تحويل ذلك الموقع إلى تطبيق. يُختار الأصلي أو Flutter حين يجب أن تكون الكاميرا والملفات والعمل في الخلفية أعمق من صفحة. إذا كفت النافذة فكتابة برنامج ثانٍ ضياع وقت.

كيف يُصنع APK المتقدّم؟

التطبيق الكبير لا يبدأ بجملة واحدة. عبارة «برنامج يفعل كل شيء» لا تنهي أي شاشة. قسّم العمل إلى جمل صغيرة. مثلاً: يدخل الشخص ويرى ملاحظاته ويضيف واحدة وتظهر تلك الملاحظة على هاتف ثانٍ. هذه أربع جمل وأربعة أعمال. لكل واحد شاشته وملفه.

  1. افصل الشاشات. قائمة وداخل ملاحظة ونموذج كتابة ودخول. لكل شاشة عمل واحد.
  2. اختر مكان البيانات. السطر الذي يحتاجه هذا الهاتف فقط يمكن أن يبقى عليه. إذا وجب أن يراه هاتف آخر فيلزم خادم.
  3. الهاتف يرسل طلباً قصيراً إلى الخادم. الخادم يرجع بيانات. القاعدة لا تقف داخل APK.
  4. لا تكتب كلمة المرور ولا المفتاح السري في الكود. من يفتح APK يستطيع قراءته. الخادم يفحص والهاتف يحفظ علامة الإذن فقط.
  5. الدخول شاشة وحدها. الخادم يعطي علامة. العلامة ليست كلمة المرور نفسها.
  6. ضع الصلاحية على الشاشة التي تقوم بالعمل. الكاميرا تُطلب في شاشة الكاميرا لا في أول فتح.
  7. قرّر ماذا يبقى مفتوحاً حين ينقطع الإنترنت. قد تظهر نسخة آخر قائمة. الكتابة الجديدة قد تنتظر ثم تذهب. إذا لم تفكر في هذا فالشاشة تقف فقط.
  8. افحص على هاتف ضيق. الزر الذي يتسع لشاشتك قد يخرج على هاتف آخر.
  9. ارفع versionCode. وقّع بالمفتاح نفسه الذي للإصدار القديم. اسم الحزمة يجب أن يبقى.
  10. صفحة المتجر منفصلة عن APK. الاسم والصور والنص القصير وعنوان الخصوصية لا تنتهي داخل الملف.

مجلدات Gradle

في التطبيق البسيط تقف شاشة واحدة داخل activity_main. في المشروع المتقدّم لكل شاشة ملفها ويجمعها Gradle في APK واحد. في الجذر يقول settings.gradle أي وحدة موجودة، عادة app. build.gradle قاعدة الجمع. gradle/wrapper وgradlew يبقيان Gradle نفسه مع المشروع كي تعمل النسخة نفسها على حاسوب آخر. gradle.properties إعدادات صغيرة.

الكود الحقيقي في مجلد app. app/build.gradle يكتب المكتبات وإصدار SDK. تحت src/main/java تقف مجلدات الحزمة: القائمة وداخل الملاحظة والدخول ملفات منفصلة. res/layout ترتيب الشاشة وres/mipmap الأيقونة وassets صفحة أو خط تضعه في الداخل. مجلدا app/build و.gradle يظهران وحدهما أثناء الجمع. لا تكتبهما باليد ولا تضعهما في Git.

مجلد الخادم قد لا يقف داخل مشروع الهاتف. هو يعمل على عنوان آخر. APK يرسل إليه طلباً فقط. الشاشة السوداء في الأسفل هي التطبيق الذي تعطيه هذه المجلدات: قائمة ومكان للصورة وقائمة سفلية.

Qeyd/
  settings.gradle
  build.gradle
  gradle.properties
  gradlew
  gradle/wrapper/
  app/
    build.gradle
    src/main/
      AndroidManifest.xml
      java/az/studio/qeyd/
        MainActivity.kt
        SiyahiEkran.kt
        QeydEkran.kt
        GirisEkran.kt
      res/layout/
      res/values/
      res/mipmap-hdpi/
      assets/
  server/          (ayrı ünvanda)

انظر إلى شاشة واحدة على الهاتف أولاً. ثم أضف الثانية. اربط الخادم في الأخير وفقط إذا وجب أن يرى الهاتف الثاني السطر نفسه. إذا بدأت بالعكس تبقى قاعدة بلا زر وAPK فارغ.

التحديث والأسئلة الشائعة

الهاتف يستبدل التطبيق القديم فقط حين تجتمع ثلاثة أشياء. اسم الحزمة واحد. التوقيع من المفتاح نفسه. versionCode أكبر. إذا نقص واحد فالملف الجديد إما لا يُثبَّت أو يقف بجانب القديم كتطبيق ثانٍ.

ابنِ تطبيقك. فتح APK غيرك ووضع شاشتك داخله لا يجعله تطبيقك. ينكسر التوقيع ولا يُثبَّت الملف وذلك البرنامج ليس لك.

هل APK وAAB الشيء نفسه؟

لا. APK هو الملف الذي يفتحه الهاتف. AAB حزمة تُعطى للمتجر. المتجر قد يحوّلها إلى APK يناسب الهاتف.

هل يُفتح APK على iPhone؟

لا. iPhone يستعمل ملفاً آخر وقاعدة أخرى. APK المجمّع لأندرويد لا يُثبَّت هناك.

لماذا الملف كبير؟

جملة واحدة على الشاشة لا تكبّر الملف. الصور والخطوط والمكتبات الإضافية تكبّره. لا تضع صورة في الداخل إذا لم تحتجها.

هل يعمل APK الويب بلا إنترنت؟

الصفحة التي وضعتها داخل الـ zip تبقى على الهاتف ويمكن أن تُفتح. الصفحة التي تُحمَّل من عنوان تحتاج الإنترنت. إذا جاءت الصورة من الخارج أيضاً تبقى فارغة حين تنقطع الشبكة.

هل يُوضع ملف debug في المتجر؟

لا. هو للاختبار. المتجر يريد توقيع إصدار ونسخة تكبر وغالباً AAB.

كيف يُثبَّت APK على الهاتف؟

تثبيت APK ليس وضعه في المتجر. يُفتح الملف على الهاتف ويطلب الهاتف إذناً ثم يظهر التطبيق في القائمة. المتجر يخفي هذه الخطوة عنك. في ملف جمّعته أو نزّلته من موقع ترى الخطوة بنفسك.

ليس كل ملف ينتهي بـ apk يُثبَّت. التنزيل الناقص والمستند باسم خاطئ والتحديث المجمّع بتوقيع آخر يوقف الهاتف. اعرف من أين جاء الملف قبل أن تفتحه.

قبل التثبيت

افتح فقط ملفاً جمّعته أو جاء من موقعك أو من صفحة المؤلف نفسه. APK يدور في رسالة واسمه يشبه تطبيقاً مشهوراً ولا صفحة له قد يكون برنامجاً آخر. كتابة apk في الاسم ليست أماناً.

الملف من Nibras Studio للاختبار. يمكن تثبيته على هاتفك وتجربة الزر. ليس إصدار متجر. عند التثبيت قد يقول الهاتف تطبيقاً غير معروف. هذا يعني فقط أن الملف لم يأتِ من Play.

نافذة التثبيت تعرض الصلاحيات التي قد يطلبها التطبيق. اقرأ القائمة. إذا طلب تطبيق ملاحظات الكاميرا وجهات الاتصال والمكان فأغلق الملف. في تطبيق أعددته بنفسك هذه القائمة هي ما كتبته في الـ manifest.

الخطوات

في Android 8 وما بعده الإذن ليس زراً عاماً. كل تطبيق يفتح الملف يحتاج إذنه. السماح لـ Chrome لا ينتقل إلى تطبيق الملفات.

  1. نزّل الملف كاملاً. إذا كان الحجم صفراً أو أصغر بكثير مما تنتظر فالتنزيل لم ينتهِ. احذف ذلك الملف وخذه من جديد.
  2. اضغط ملف apk من مجلد التنزيلات أو تطبيق الملفات. الضغط على التنزيل المنتهي تحت المتصفح ينفع أيضاً.
  3. إذا قال الهاتف إن التثبيت من هذا المصدر مغلق فانتقل إلى الإعداد الذي يُفتح. شغّل تثبيت التطبيقات غير المعروفة لذلك التطبيق أو السطر الذي يعني الشيء نفسه. ارجع واضغط الملف من جديد.
  4. في Android القديم الطريق مختلف. الإعدادات ثم الأمان ثم المصادر غير المعروفة. بعد التثبيت أغلق ذلك السطر من جديد.
  5. اقرأ قائمة الصلاحيات. إذا وافقت فاضغط تثبيت. حين ينتهي يظهر فتح.
  6. إذا كان التطبيق نفسه موجوداً على الهاتف والتوقيع متطابقاً فالزر يقول تحديث. يجب أن يكون اسم الحزمة واحداً والتوقيع واحداً وversionCode أكبر.
  7. افتحه واضغط الزر الرئيسي مرة. الشاشة البيضاء أو الإغلاق الفوري يعني أن الداخل لا يعمل لا أن التثبيت فشل.
  8. يمكنك إغلاق الإذن بعد انتهاء العمل. في الإعدادات أطفئ التثبيت غير المعروف لذلك المتصفح أو تطبيق الملفات. التطبيق المثبَّت يبقى.

الفرق حسب الماركة

في Android النظيف الطريق قصير. حين تفتح الملف يأخذك الهاتف نفسه إلى صفحة الإذن. هواتف Pixel وبعض Nokia هكذا.

في Samsung الطريق الإعدادات ثم الأمان والخصوصية ثم تثبيت التطبيقات غير المعروفة. في بعض الموديلات القاطع التلقائي أو حماية التطبيق تقطع الملف. اقرأ التحذير. إذا كان ملفاً جمّعته فاسمح هذه المرة فقط ولا تطفئ الحماية إلى الأبد.

في Xiaomi وRedmi وPoco الإذن غالباً في الإعدادات ثم الخصوصية ثم الأذونات الخاصة ثم التطبيقات غير المعروفة. تطبيق الأمان يفحص الملف أيضاً ويمسك التثبيت. حين ينتهي الفحص قد يلزم الضغط على تثبيت من جديد. إذا أرسلته من الحاسوب بكبل فيجب أن يكون التثبيت عبر USB مفتوحاً في خيارات المطوّر.

في Huawei وHonor الطريق الإعدادات ثم الأمان ثم مزيد من الإعدادات ثم التثبيت من مصادر غير معروفة. بعض الموديلات فيها وضع يقطع المصدر الخارجي. لملف لم يأتِ من AppGallery افتح ذلك الوضع لهذا التثبيت فقط ثم أغلقه.

إلى ماذا تنتبه

هذا الطريق لا يحل محل مراجعة المتجر. إذا أعطيت صديقاً ملف اختبار فهو يرى الخطوات نفسها. النشر للجميع يحتاج Play أو AppGallery.

  • قد يُظهر Play Protect تحذيراً. هو لا يعرف ملف الاختبار. اقرأ النص. لا تمرّر ملف مؤلف لا تعرفه بـ «ثبّت على أي حال».
  • حساب الطفل وملف العمل قد يقطعان التثبيت. في مثل هذا الهاتف إذن المستخدم العادي لا يكفي.
  • التطبيق الذي يفتح الملف والتطبيق الذي سمحت له يجب أن يكونا واحداً. إذا فتحته من Telegram فالإذن لـ Telegram. إذا فتحته بعدها من الملفات فأعطِ الإذن للملفات أيضاً.
  • حين ينتهي التثبيت يظهر التطبيق في القائمة. إذا لم تره فابحث عن اسم الحزمة أو العنوان على الشاشة. أحياناً يقع داخل مجلد.
  • الحذف من الإعدادات أو بالضغط المطوّل على الأيقونة. حين يُحذف قد يذهب أيضاً السطر الذي حفظه التطبيق في الداخل.

APK لا يُثبَّت أو لا يُفتح

الهاتف غالباً يُظهر جملة قصيرة. تحت تلك الجملة قد تكون عدة أسباب. انظر إلى الملف أولاً ثم إلى النسخة القديمة على الهاتف وفي الأخير إلى نوع الهاتف. حذف المكان الخطأ وإعادة التثبيت قد يحذف البيانات القديمة أيضاً. افصل السبب أولاً.

تعذّر تحليل الحزمة

«حدثت مشكلة أثناء تحليل الحزمة» أو «الملف ليس حزمة صالحة» يعني ملفاً ناقصاً أو ملفاً آخر. المتصفح حفظ صفحة باسم apk. إذا كان الحجم بضعة كيلوبايت فالداخل نص لا برنامج.

احذف الملف. افتح الموقع أو Studio من جديد وانتظر حتى تنتهي نسبة التنزيل. إذا انقطعت الشبكة يبقى ملف مكسور. تسمية zip باسم APK تعطي هذا الخطأ أيضاً. APK يُجمَّع وحده وzip مادته الخام.

التوقيع غير متطابق

«الحزمة تتعارض مع حزمة موجودة» أو «التوقيعات غير متطابقة» يعني أن تطبيقاً بالاسم نفسه موجود على الهاتف لكن هذا الملف جُمّع بمفتاح آخر. الهاتف لا يضع ملف مفتاح آخر فوق القديم.

هناك مخرجان. احذف التطبيق القديم وثبّت الجديد. هذا يأخذ السطر المحفوظ في الداخل. أو أعد تجميع الملف الجديد بالمفتاح القديم. إذا استعملت مفتاح تجريب مرة ومفتاحاً آخر للمتجر فالهاتف لا يحسبهما تطبيقاً واحداً. خلط ملف التجريب من Nibras Studio مع مفتاح الإصدار يعطي هذا الخطأ.

الإصدار أقدم

إذا قال إن الإصدار لا يمكن أن ينزل أو جاء خطأ بدل زر التحديث فـ versionCode في الملف الجديد أصغر من النسخة على الهاتف أو مساوٍ لها. الهاتف لا يرجع إلى الخلف.

كبّر versionCode في build.gradle وأعد التجميع وثبّت ذلك الملف الجديد. تغيير اسم الملف بلا تكبير العدد لا يكفي. حذف القديم يثبّت أيضاً لكن بيانات الشخص تذهب. على هاتف الاختبار يمكن الحذف. على هاتف غيرك كبّر العدد.

الهاتف غير متوافق

إذا قال إن هذا الإصدار غير متوافق مع جهازك أو كان زر التثبيت خامداً فـ minSdk أعلى من Android الهاتف. الهاتف القديم لا يفتح هدفاً جديداً. والعكس، الملف ذا الهدف القديم جداً قد يقطعه Android الجديد نفسه.

السبب الثاني المعالج. ملف split جُمّع لنوع واحد من الهواتف لا يُفتح على آخر. يلزم APK كامل أو ملف يطابق ذلك الهاتف. لا يمكن رمي AAB مباشرة على الهاتف. يجب أن يصير APK أولاً. المتجر يقوم بهذا التحويل. التثبيت باليد يريد APK.

التخزين وملف الاختبار

«التخزين غير كافٍ» سبب واضح. احذف الصور وتطبيقاً لا تحتاجه ثم اضغط من جديد. إذا كان الملف نفسه كبيراً فالتثبيت يحتاج فراغاً أكبر من حجم الملف لأن الهاتف يفتحه وينسخه.

«للاختبار فقط» يحدث في بعض تجميعات الفحص من Android Studio. ذلك الملف ليس للمتجر ولا للتثبيت العادي. خذ تجميع إصدار. APK التجريبي من Nibras Studio لا يأتي بهذه الجملة ويمكن تثبيته بالطريق العادي. علم testOnly في Android Studio يوقف التثبيت من تطبيق الملفات.

Play Protect أو الحماية قطعت

يظهر زر التثبيت ثم تأتي نافذة تطبيق ضار أو نافذة حماية. لا تجاوز هذا التحذير في ملف لا تعرفه. إذا كان النص لا يذكر اسم حزمتك في ملف اختبار جمّعته فقد خلطت الملف.

إذا كان ملفك فاسمح لهذا التثبيت فقط في تلك النافذة. لا تطفئ الحماية لكل الهاتف. في Xiaomi وSamsung الضغط قبل انتهاء الفحص يكرّر الخطأ. انتظر انتهاء الفحص.

ملف العمل ورقابة العائلة وبعض هواتف الشركات تقطع الملف الخارجي بالكامل. في مثل هذا الجهاز قد لا يكون الإعداد في يدك. جرّب على هاتفك.

ثُبِّت لكنه لا يُفتح

الأيقونة ظاهرة. تضغط فتبقى شاشة بيضاء أو يُغلق التطبيق فوراً. هذا لم يعد خطأ تثبيت. الصفحة أو الصلاحية أو مكتبة في الداخل لا تعمل.

  • إذا كان تطبيق الويب يُفتح من عنوان فافحص الإنترنت. إذا كان العنوان خطأ تبقى الشاشة فارغة. الصفحة الموضوعة داخل zip يجب أن تُفتح بلا عنوان.
  • على Huawei وعلى هاتف بلا خدمات Google قد يُسقط الدخول بـ Google أو الخرائط أو إشعار Play عملية الفتح. أخفِ ذلك الجزء أو لا تستدعِ خدمة ليست على الهاتف.
  • إذا رُفضت الصلاحية يموت الزر. ادخل إلى صلاحية التطبيق من الإعدادات وافتح الكاميرا أو الإشعار.
  • إذا بقيت بيانات قديمة مكسورة فامسح ذاكرة التطبيق. يمكن أيضاً حذفه وإعادة تثبيته بالمفتاح نفسه. التثبيت بمفتاح آخر يعود إلى خطأ التوقيع.
  • إذا فُتح عندك فقط لا عند غيرك فأنت لا تنظر إلى فرق المحاكي أو إصدار Android. جرّب هاتفاً قديماً وهاتفاً جديداً.

افحص بهذا الترتيب

حين تجتمع عدة أسباب غيّر الملف أولاً ثم النسخة القديمة وفي الأخير الهاتف.

  1. انظر إلى حجم الملف. إذا كان صغيراً جداً فنزّله من جديد.
  2. إذا كان التطبيق نفسه على الهاتف فافحص التوقيع وversionCode. إذا لم يتطابقا فاحذف أو كبّر العدد وجمّع بالمفتاح نفسه.
  3. إذا كان Android الهاتف أقل مما يطلب التطبيق فيلزم هاتف آخر أو minSdk أقل.
  4. انظر إلى الفراغ. ثم اقرأ نافذة الحماية ولا تطفئها إلى الأبد.
  5. إذا ثُبّت ولم يُفتح فافصل الإنترنت والصلاحية وخدمات Google. الشاشة البيضاء غالباً عنوان خطأ.

الأيقونة والاسم واسم الحزمة

للتطبيق ثلاثة أسماء وهي لا تؤدي العمل نفسه. الاسم القصير تحت الأيقونة هو ما يراه الشخص. الاسم في صفحة المتجر يمكن أن يكون أطول. اسم الحزمة ليس كلمة يقرأها الشخص. الهاتف والمتجر يتعرّفان على التطبيق به. تغيير واحد لا يغيّر الآخرين وحده.

الأيقونة منفصلة أيضاً. صورة قائمة الهاتف وصورة المتجر بقياس 512 قد تكونان الرسم نفسه لكنهما ملفان. أخذ علامة غيرك أو اسم تطبيق مشهور رفض وليس تطبيقك.

الاسم تحت الأيقونة

هذا الاسم يظهر تحت الأيقونة. إذا طال يقطعه الهاتف. كلمتان أو ثلاث قصيرة تكفي. «أفضل تطبيق ملاحظات عندي» لا يتسع في القائمة.

في المشروع الأصلي يقف الاسم في سطر app_name داخل res/values/strings.xml. يستدعيه AndroidManifest.xml بـ android:label="@string/app_name". يمكن كتابة الكلمة مباشرة في الـ manifest، لكن إبقاء سطر لكل لغة يصير أصعب. للغة أخرى يُكرَّر app_name نفسه في مجلدي res/values-tr وres/values-ru.

Nibras Studio يسأل عن الاسم أثناء الجمع. ذلك الاسم يقع على عنوان النافذة. العنوان الكبير داخل الموقع يبقى في index.html. إذا أردت أن يتطابقا فغيّر الاسم في Studio وعنوان الصفحة.

اسم المتجر في نموذج منفصل. يمكن أن تكتب أطول قليلاً هناك، لكن لا تعد بعمل لا يفعله الداخل. اسم القائمة قد يكون «ملاحظة» واسم المتجر «ملاحظة — سطر يومي». اسم الحزمة قد لا يظهر في أي منهما.

الأيقونة

الهاتف لا يحفظ الصورة بمقاس واحد. عدة مقاسات للرسم نفسه تُصف في مجلدات. إذا نقص أحدها فالهاتف يصغّر الصورة الكبيرة وتبدو الأيقونة مشوشة.

  • 48×48 داخل mipmap-mdpi
  • 72×72 داخل mipmap-hdpi
  • 96×96 داخل mipmap-xhdpi
  • 144×144 داخل mipmap-xxhdpi
  • 192×192 داخل mipmap-xxxhdpi
  • PNG منفصل 512×512 للمتجر. هذا يُوضع في نموذج المتجر لا في مجلد الهاتف.

في المشروع الجديد غالباً تُقص الأيقونة داخل دائرة أو مربع مستدير. لا تضع الكتابة والخط المهم على الحافة. تبقى علامة واحدة في الوسط. الحرف على الحافة يُقص.

اسم الملف عادة ic_launcher.png. الأيقونة المستديرة قد تكون ic_launcher_round.png منفصلة. نافذة Image Asset في Android Studio تصنع هذه المقاسات من صورة واحدة. رمي صورة كبيرة باليد في مجلد واحد لا يكفي.

في APK الويب يأخذ Nibras Studio الأيقونة في خطوة الجمع. أيقونة الموقع الصغيرة ليست دائماً أيقونة الهاتف. الصورة التي تعطيها لـ Studio تكون مربعة ولا تحمل علامة ماركة أخرى على الحافة.

اسم الحزمة

اسم الحزمة هو رقم التطبيق الدائم. قد لا يراه الشخص في القائمة، لكن الهاتف يعرف به هل الملفان التطبيق نفسه. يُكتب عادة كنطاق مقلوب: az.studio.note. كل قطعة أحرف صغيرة. لا فراغ ولا حرف كبير ولا شرطة. الرقم لا يقف في أول القطعة.

المكان يتغير حسب نوع المشروع. للأصلي وFlutter هو سطر applicationId في app/build.gradle. لـ Capacitor يجب أن يطابق appId داخل capacitor.config ذلك السطر. سطر package القديم في الـ manifest يبقى في بعض المشاريع. إذا اختلف applicationId فالهاتف ينظر إلى applicationId.

لا تذهب إلى المتجر بـ com.example أو com.test. هذا اسم مثال. إذا لم يكن لك نطاق فاختر اسماً ثابتاً واكتبه نفسه في كل مكان: az.yourname.note. بعد أول رفع لا يسمح Play وAppGallery بتغيير هذا الاسم.

تغيير الاسم يفتح تطبيقاً جديداً. الحزمة القديمة تبقى على الهاتف القديم والجديدة تقف بجانبها. التحديث لا يعبر. السطر المحفوظ في الداخل يبقى في التطبيق القديم. لذلك قرّر الاسم في البداية قبل أول إصدار.

ماذا لا تخلط

اكتب الثلاثة على ورقة: اسم القائمة واسم الحزمة وأين يقف المفتاح. بعد أول AAB لا تتغير الحزمة عن تلك الورقة.

  • تغيير اسم القائمة لا يغيّر الحزمة. تتغير الكلمة فقط ويأتي التحديث فوق التطبيق نفسه.
  • تغيير الحزمة لا يصلح اسم القائمة وحده. هما عملان.
  • تغيير الأيقونة لا يغيّر المفتاح. ملف بأيقونة جديدة موقّع بالمفتاح نفسه يحل محل القديم.
  • اسم المتجر واسم القائمة قد لا يتطابقان. فرق قصير ليس كذباً أمر عادي.
  • نسخ أيقونة تطبيق آخر وحزمته لا يجعله تطبيقك. المتجر يرفض والهاتف لا يثبّت حين لا يتطابق التوقيع.

كيف يُنشأ المفتاح؟

المفتاح هو توقيع التطبيق. تغلق الملف بهذا المفتاح. الهاتف والمتجر يبحثان عن المفتاح نفسه في الملف التالي. إذا كانت الحزمة واحدة والمفتاح واحداً وversionCode أكبر فالتطبيق القديم يتحدّث. إذا كان المفتاح غيره فالهاتف يحسبه مؤلفاً آخر ولا يضعه فوق القديم.

المفتاح ليس كلمة مرور واحدة. هو ملف اسمه keystore وفيه مفتاح أو أكثر. لكل مفتاح لقب أي alias. تُسأل كلمة مرور الملف وكلمة مرور المفتاح. إذا ضاعت الاثنتان فلن تفتح الملف ولو كان في يدك.

إنشاؤه بأمر

إذا كانت Java على الحاسوب فأمر keytool ينشئ المفتاح. افتح مجلداً فارغاً بجانب المشروع وضع المفتاح هناك. لا تضعه في مجلد Git للمشروع. حين يسأل الأمر تُكتب الاسم والمؤسسة والمدينة. السطر الذي لا تعرفه يمكن أن يبقى فارغاً. لا تُبقِ كلمة المرور على شاشة الطرفية.

keytool -genkeypair -v \
  -keystore qeyd.keystore \
  -alias qeyd \
  -keyalg RSA \
  -keysize 2048 \
  -validity 10000

qeyd.keystore هو الملف نفسه. qeyd هو اللقب. RSA بمقاس 2048 يكفي لجمع اليوم. 10000 يوم مدة طويلة. إذا اخترت مدة قصيرة يهرم المفتاح ويتوقف التحديث. حين ينتهي الأمر احفظ الملف في مكانين: واحد على قرصك وواحد على ذاكرة منفصلة.

لترى ماذا أنشأت اكتب keytool -list -v -keystore qeyd.keystore. يسأل كلمة المرور ويُظهر بصمة الشهادة. إذا وصلت دخول Google أو خريطة لاحقاً فقد تلزم تلك البصمة. احفظها مع المفتاح.

ربطه بالجمع

ملف المفتاح وحده لا يوقّع APK. يجب أن يستدعيه جمع الإصدار. في Android Studio تسأل نافذة Generate Signed Bundle أو Generate Signed APK عن الملف واللقب وكلمة المرور. يمكن تذكّر المسار. لا تُكتب كلمة المرور في ملف يراه الجميع.

حين تربطه بـ Gradle لا تضع كلمة المرور داخل المشروع كنص مكشوف. احفظها في ملف منفصل ولا تضف ذلك الملف إلى Git. المثال يُظهر المكان فقط. بدّل مكان ACARIN بكلمة مرورك واحفظ الملف خارج المستودع.

// app/build.gradle  — şifrəni repoya yazma
signingConfigs {
    release {
        storeFile file("qeyd.keystore")
        storePassword "ACARIN"
        keyAlias "qeyd"
        keyPassword "ACARIN"
    }
}

ثم يستدعي جمع الإصدار هذا الإعداد. ./gradlew bundleRelease يعطي AAB. ./gradlew assembleRelease يعطي APK. جمع التجريب لا يستعمل هذا المفتاح. هو يُغلق بمفتاح التجريب الخاص بالحاسوب.

مفتاح التجريب غيره

Android Studio لا يطلب مفتاحك في أول فحص. على الحاسوب keystore تجريبي مخفي. الملف المجمّع بذلك المفتاح يشبه الفحص على جهازك فقط. مفتاح التجريب في حاسوب آخر مختلف. لذلك ملف التجريب من حاسوب لا يعلو ملف التجريب من الآخر ويعطي خطأ توقيع.

APK من Nibras Studio موقّع توقيعاً تجريبياً أيضاً. يمكن لصديق تجربته على الهاتف. Play وAppGallery لا يقبلان ذلك الملف كإصدار أخير. من أول ملف يذهب إلى المتجر يلزم مفتاح الإصدار الخاص بك. لا يمكن الخروج إلى المتجر مرة بمفتاح التجريب.

أين يُحفظ وماذا يحدث إذا ضاع

لا تحفظ المفتاح في مجلد المشروع ولا في البريد ولا على قرص مشترك. يقف على ذاكرة منفصلة وفي مكان تفتحه أنت فقط. لا تكتب كلمة المرور في ملف نص مكشوف بجانب المفتاح. احفظ كلمة المرور في مكان آخر. ضياع الاثنين في مكان واحد سهل وسرقتهما من مكان واحد سهلة أيضاً.

إذا ضاع مفتاح APK وقّعته بنفسك فلن تستطيع وضع ملف جديد فوق ذلك التطبيق. يمكن حذف القديم والبدء باسم حزمة جديد. صفحة المتجر القديمة وبيانات الشخص لا تنتقلان إلى التطبيق الجديد.

في Play App Signing قد يكون مفتاحان. مفتاح الرفع عندك ومفتاح توقيع المتجر عند Google. إذا ضاع مفتاح الرفع يمكن طلب إعادة ضبط من Play Console. هذا قد يأخذ أياماً. ضياع مفتاح توقيع المتجر نفسه ليس في يدك، فـ Google يحفظه. في تطبيق قديم لم ينضم إلى هذه الخدمة وكان المفتاح عندك وحدك تكون الخسارة نهائية.

في Huawei إذا وقّعت APK بنفسك فالقاعدة نفسها. إذا ضاع المفتاح يتوقف تحديث ذلك التطبيق في AppGallery. إذا اخترت AAB وانضممت إلى خدمة التوقيع من Huawei فالتوقيع الأخير عندهم. مع ذلك احفظ مفتاح الملف الذي ترفعه لأن الرفع التالي قد يطلبه.

كيف يُكسب المال من تطبيق الهاتف؟

المال لا يظهر داخل التطبيق وحده. أولاً يجب أن تكون هناك شاشة تنفع الشخص. ثم تجعل جزءاً من ذلك العمل مدفوعاً أو تعرض إعلاناً. زر دفع على تطبيق فارغ لا يأتي بمال. إذا لم يرَ الشخص سبباً فلن يضغط.

الكسب يبدأ عادة قليلاً. أولاً يجب أن يفتح عشرة أشخاص التطبيق وينهوا عملهم. ثم يُضاف الدفع أو الإعلان. يمكن ربط شبكة إعلان وحساب متجر وبنك في اليوم الأول، لكن المال الآتي يعتمد على المستخدم.

طرق الدفع

هناك بضع طرق مستقيمة. ملؤها كلها معاً يفسد الشاشة. اختر واحدة وانظر أنها تعمل ثم أضف الثانية.

  • تثبيت مدفوع. يدفع الشخص مرة حين يأخذ التطبيق من المتجر. هذا يناسب أداة صغيرة جاهزة.
  • شراء لمرة واحدة داخل التطبيق. صفحة إضافية أو وضع بلا إعلان أو حزمة. إذا بِيعت السلعة الرقمية في المتجر فيجب أن تمر بدفع المتجر نفسه.
  • اشتراك. يتجدد كل شهر أو كل سنة. يجب أن يرى الشخص متى ينتهي وكيف يوقفه.
  • إعلان. الشريط يقف في طرف الشاشة. الإعلان بملء الشاشة لا ينبغي أن يقطع العمل. في الإعلان المكافأ الشخص يختار أن يشاهد ويأخذ شيئاً في المقابل.
  • خدمتك أنت. التطبيق نافذة الموقع. الدرس أو الحجز أو العمل الذي يُنجز خارج الهاتف يمكن دفعه على الموقع. للسلعة الرقمية التي تُستهلك داخل التطبيق غالباً ما يريد المتجر دفعه الخاص.

ماذا يجب أن تربط

كي يصل المال إليك يلزم حسابات خارج التطبيق أيضاً. هي لا تقف في مجلد APK. أنت تسجّل على موقع والتطبيق يحفظ رقم ذلك الحساب.

  • حساب متجر. للخروج على Google Play يلزم Play Console. في فتحه رسم لمرة واحدة.
  • ملف بائع وبنك. يجب أن يعرف المتجر أين يرسل المال. ويسأل عن معلومات الضريبة أيضاً.
  • Play Billing للشراء الرقمي. تُربط مكتبة داخل التطبيق. يُفتح السعر كمنتج في المتجر ولا يُكتب سعر خفي في الكود.
  • حساب شبكة إعلان للإعلانات. يُعطى التطبيق رقم وحدة الإعلان. إذا كان المستخدم في أوروبا فلزم نافذة موافقة أيضاً.
  • صفحة خصوصية. اكتب ماذا تجمع واذكر الإعلان والدفع في عنوان واحد. المتجر يطلب ذلك العنوان.
  • مستخدم تجربة. لا تجعل أول شراء ببطاقتك. مُجرِّب الترخيص في المتجر يسمح بتجربة الزر بدفع غير حقيقي.

ملف APK التجريبي من Nibras Studio للاختبار. دفع المتجر لا يُفتح به. إذا كان في الموقع نفسه دفع فتستطيع النافذة فتح تلك الصفحة. وضعه في المتجر ما زال يحتاج توقيع إصدار ونسخة تكبر وقاعدة المتجر.

إلى ماذا تنتبه

المتجر يُبقي جزءاً من البيع والباقي يأتي إليك. الحصة الدقيقة مكتوبة في صفحة المتجر نفسه وقد تتغير. ضريبة المبلغ الذي يصل تُحسب بقاعدة بلدك.

  • لا تخفِ السعر. يظهر المبلغ والمدة بجانب الزر. في الاشتراك يُكتب متى يتجدد.
  • الإيقاف لا يكون صعباً. يجب أن يستطيع الشخص إغلاق الاشتراك من صفحة اشتراكات المتجر.
  • الإعلان لا يبدو كزر النظام. علامة الإغلاق لا تكون صغيرة ولا كاذبة. لا تغطِ الزر الرئيسي للشاشة.
  • للأطفال قاعدة أشد. الإعلان والشراء في تطبيق الأطفال يُفحصان بشدة أكبر. إذا كنت لا تعرف العمر فلا تملأ التطبيق كأنه صُنع للأطفال.
  • لا تبع سلعة ليست لك. لا تجعل درس غيرك أو موسيقاه أو صورته مدفوعة باسمك.
  • لا تكتب المفتاح السري ولا سر الدفع داخل APK. من يفتحه يستطيع القراءة. اترك الفحص على الخادم.
  • لا تعد بأول مال. دخل الإعلان يعتمد على المشاهدات. إذا لم يفتح أحد فالشبكة لا تدفع أيضاً.
  • التطبيق الذي يخالف القاعدة قد يُغلق حسابه. الزر المضلِّل والاشتراك المخفي والدفع الذي لا يعمل من هذا.

كيف ترفع التطبيق الجاهز إلى Play Market؟

Play Market هو Google Play. وضع APK على هاتفك عمل آخر. للوصول إلى المتجر يلزم حساب Play Console وAAB موقّع وصفحة مملوءة. ملف APK التجريبي من Nibras Studio لا يذهب إلى هناك. منذ أغسطس 2021 التطبيق الجديد يجب أن يكون AAB لا APK. AAB حزمة. المتجر يحوّلها إلى APK صغير حسب نوع الهاتف.

العمل لا ينتهي في يوم. هناك فحص هوية ونص وصور وفي بعض الحسابات اختبار مغلق لمدة 14 يوماً. اجمع الملف أولاً ثم املأ الصفحة وفي الأخير أرسله للمراجعة.

الخطوات

الترتيب مهم. يمكن فتح تطبيق فارغ ورفع صورة، لكن زر الإنتاج يبقى مغلقاً حتى تنتهي النماذج.

  1. افتح Play Console بحساب Google. الحساب الشخصي يُطلب منه وثيقة هوية. حساب المؤسسة يُطلب منه أوراق الشركة وغالباً رقم D-U-N-S. في الفتح رسم لمرة واحدة. المبلغ في صفحة التسجيل.
  2. اضغط Create app. اختر الاسم واللغة الأولى والتطبيق أو اللعبة والمجاني أو المدفوع. اسم الحزمة يُقفل مع أول AAB ولا يتغير بعد ذلك. يجب أن يطابق applicationId داخل التطبيق.
  3. اجمع AAB للإصدار. في Android Studio استعمل Generate Signed Bundle أو نفّذ ./gradlew bundleRelease في جذر المشروع. الملف عادة في app/build/outputs/bundle/release. احفظ المفتاح. إذا ضاع لا تستطيع وضع ملف جديد فوق التطبيق نفسه.
  4. الانضمام إلى Play App Signing قد يعني مفتاحين. مفتاح الرفع يبقى عندك ومفتاح توقيع المتجر عند Google. التحديث يجب أن يتبع قاعدتيهما. الملف المجمّع بمفتاح التجريب لا يذهب إلى المتجر.
  5. من 31 أغسطس 2026 تطبيق الهاتف الجديد والتحديث يجب أن يستهدفا API 36 أي Android 16. الهدف القديم يُرفض. targetSdk يُكتب في build.gradle.
  6. املأ صفحة المتجر. نص قصير ونص طويل وأيقونة 512 ونشرة 1024x500 ولقطات شاشة الهاتف والفئة وبريد التواصل. عنوان الخصوصية يجب أن يُفتح.
  7. أنهِ نماذج المحتوى. هل هناك إعلان وما البيانات التي تُجمع واستبيان العمر ولمن التطبيق. إذا كان للأطفال فالنماذج أشد. تطبيق الأخبار له إقرار خاص.
  8. اختر البلدان والسعر. يمكن أن يبقى مجانياً والدفع في الداخل. تحويل التثبيت المجاني إلى تثبيت مدفوع لاحقاً قد يكون صعباً.
  9. ضعه أولاً في الاختبار الداخلي. هذه قائمة بريدك وحتى 100 شخص. انظر أن الملف يُفتح. هذا المسار لا يُحسب في قاعدة الـ 12.
  10. ثم الاختبار المغلق. قائمة بريد أو Google Group. الحساب الشخصي المفتوح في 13 نوفمبر 2023 أو بعده يجب أن يُبقي 12 شخصاً على الأقل مسجّلين معاً 14 يوماً متتالية لكل تطبيق جديد. إذا خرج أحد يبدأ عدّه من جديد. التجميع الجديد لا يصفّر الأيام. حساب المؤسسة والحساب الشخصي من قبل ذلك التاريخ لا يصطدم بهذا الجدار.
  11. حين تنتهي الـ 14 يوماً اطلب إذن الإنتاج من Dashboard. اكتب عمل التطبيق الحقيقي في الأجوبة. الإذن غالباً يأخذ حتى أسبوع. الاختبار المفتوح يُفتح بعد هذا الإذن.
  12. بعد الإذن أرسل AAB في مسار الإنتاج. المراجعة قد تأخذ أياماً. الرفض يكتب السبب. أصلح وأعد الإرسال مع versionCode أكبر.

التحديث

الملف الجديد يحل محل التطبيق القديم فقط حين تجتمع ثلاثة أشياء. اسم الحزمة لا يتغير. التوقيع يوافق الإصدار السابق. versionCode أكبر. فتح تطبيق جديد باسم آخر لا ينقل المستخدمين القدامى. هو يقف في المتجر كبرنامج ثانٍ.

لقطة الشاشة يجب أن تكون من التطبيق نفسه. لا تعد بعمل لا يفعله النص. الرفض الأول ممكن. اقرأ التقرير وأصلح الصورة أو النص وأعد الإرسال. الصفحة المضلِّلة والدفع الذي لا يعمل قد يغلقان الحساب.

كيف ترفع التطبيق الجاهز إلى Huawei AppGallery؟

متجر Huawei هو AppGallery. حسابه منفصل عن Play Market. حساب Google لا يعمل هناك. APK الذي تضعه على هاتفك لا يسقط وحده في المتجر. يُفتح تطبيق في AppGallery Connect ويُرفع ملف موقّع وتُملأ الصفحة ويُرسل للمراجعة.

الخروج على Play لا يعني الخروج على Huawei. اسم الحزمة قد يكون واحداً، لكن هناك حسابان وصفحتان ومراجعتان. حين ينتهي أحدهما لا يُفتح الآخر وحده.

الخطوات

لا يُرفع الملف قبل التحقق من الحساب. أنهِ الهوية أولاً ثم اجمع الحزمة.

  1. افتح Huawei ID على developer.huawei.com. تحقّق كشخص أو كشركة. الحساب الشخصي يُطلب منه وثيقة هوية والشركة أوراق التسجيل. الفحص غالباً يأخذ يوماً أو يومي عمل.
  2. في AppGallery Connect افتح My apps ثم تطبيقاً جديداً. المنصة Android والجهاز هاتف. اكتب الاسم واللغة الأولى واسم الحزمة والفئة. اسم الحزمة لا يتغير بعد أول رفع ويجب أن يطابق applicationId داخل التطبيق.
  3. اختر الملف. يمكن قبول APK وAAB. توقّع APK بمفتاحك. في هذا الطريق يبقى التوقيع الأخير عندك. إذا اخترت AAB فيجب الانضمام إلى خدمة App Signing من Huawei وهم يحتفظون بالتوقيع الأخير.
  4. طريق APK هكذا. في مجلد android للمشروع نفّذ ./gradlew assembleRelease. الملف في app/build/outputs/apk/release. لا تُضع المفتاح. التحديث التالي يجب أن يُوقَّع بالمفتاح نفسه.
  5. versionCode وversionName يجب أن يطابقا الإصدار الذي تكتبه في المتجر. versionCode يكبر مع كل ملف جديد. العدد نفسه لا يحل محل القديم.
  6. لكل لغة املأ الاسم والشرح القصير والشرح الطويل والأيقونة ولقطات الشاشة. الصور تكون شاشة التطبيق نفسه. الصورة الفارغة أو المقصوصة من برنامج آخر سبب رفض.
  7. اكتب البلدان والمجاني أو المدفوع وعنوان الخصوصية. اختر درجة العمر بالاستبيان. إذا بعت سلعة رقمية داخل التطبيق فقد يُطلب دفع Huawei الداخلي.
  8. قبل الإرسال افتحه على هاتف Huawei أو في اختبار AppGallery السحابي. المحاكي الذي فيه Google يخفي الخطأ الذي يتوقف على Huawei.
  9. أرسل الصفحة للمراجعة. قد يأخذ أياماً. الرفض يكتب ما الناقص. أصلح وأعد الإرسال باسم الحزمة نفسه وversionCode أكبر. يمكن أن يُفتح فور المراجعة أو في ساعة تختارها.

خدمات Google غير موجودة على Huawei

منذ أواخر 2019 كثير من هواتف Huawei بلا خدمات Google Play. الدخول بـ Google وخرائط Google وPlay Billing وإشعارات Firebase لا تُفتح على تلك الهواتف. أخفِ هذه الأجزاء أو استبدلها بخدمة Huawei. التطبيق الذي يمر المراجعة قد يُفتح ويُظهر زراً فارغاً. لذلك يلزم الاختبار السحابي أو هاتف Huawei حقيقي.

إذا كان التطبيق مجرد نافذة لموقعك ولا يستدعي مكتبة Google فالصفحة نفسها يمكن أن تُفتح على AppGallery أيضاً. ما زلت تحتاج APK أو AAB بتوقيع الإصدار. ملف التجريب من Nibras Studio ليس ملف متجر.

المتجران جمهوران. الشخص على Play لا يراك على Huawei وحده. نص الصفحة والأيقونة وعنوان الخصوصية يُملأ في كل متجر على حدة. إبقاء اسم الحزمة واحداً في الاثنين لا يخلط التحديث لأن المتجرين لا يحملان توقيع بعضهما. احفظ مفتاح أول ملف في مكانه لكل متجر.

في أي حال قد لا يُوافَق على التطبيق؟

المتجر قد يرفض الملف لا لأنه فُتح بل لأنه لا يتبع القاعدة. الرفض لا يغلق الحساب دائماً. الرد يكتب السبب. يمكن إصلاحه وإعادة الإرسال باسم الحزمة نفسه وversionCode أكبر. إرسال الخطأ نفسه مرة ثانية يطيل المراجعة. التضليل يضع الحساب في خطر.

Play وHuawei لا يستعملان الكلمة نفسها، لكن جذر الرفض متشابه. الصفحة تكذب أو التطبيق لا يُفتح أو الصلاحية غير مشروحة أو الملف ليس التجميع الذي طلبه المتجر. الحالات أدناه هي الأكثر.

الصفحة لا تطابق التطبيق

المراجع ينظر إلى صفحة المتجر أولاً ثم يفتح التطبيق. إذا لم يصفا العمل نفسه يأتي الرفض. لقطة مقصوصة من برنامج آخر أو أيقونة هي علامة ماركة أخرى أو زر موعود في النص وليس في التطبيق تجعل الصفحة كذباً.

  • النص القصير والطويل فارغان أو منسوخان من تطبيق آخر أو مجرد كومة كلمات مفتاح.
  • لقطات الشاشة ليست شاشة التطبيق نفسه. المقاس خطأ أو الصورة مشوشة.
  • في الاسم «رسمي» أو «الأفضل» أو اسم شركة أخرى وأنت لست تلك الشركة.
  • عنوان الخصوصية لا يُفتح أو الصفحة فارغة أو لا تقول ماذا يجمع التطبيق.
  • اللغة مختلطة. الصفحة بلغة وداخل التطبيق بلغة أخرى والمراجع لا يفهم العمل.
  • الفئة خطأ. اللعبة تُكتب كأداة وتطبيق الأطفال كأنه للكبار.

التطبيق لا يُفتح أو فارغ

يجب أن يرى المراجع العمل الرئيسي خلال دقائق. الملف الذي يسقط في الشاشة الأولى أو يبقى أبيض أو زرّه لا يفعل شيئاً لا يُوافَق عليه. فتحه على هاتفك لا يكفي. يجب أن يُفتح على جهاز الاختبار عندهم أيضاً.

  • يعطي خطأ عند الفتح أو يُغلق فوراً.
  • يطلب دخولاً لكن اسم التجربة وكلمة المرور غير مكتوبين في الملاحظة. لا يستطيع النظر إلى الداخل بلا حسابك.
  • الخادم مطفأ. القائمة فارغة والصورة لا تأتي والصفحة تقف.
  • الضغط على الزر بلا جواب. النموذج لا يُرسل.
  • طلب الصلاحية بلا سبب. تطلب الكاميرا ولا توجد شاشة تستعملها.

مجرد نافذة موقع

Google Play غالباً يرفض تطبيقاً يضع موقعاً في نافذة فقط. إذا لم يكن فيه إشعار ولا عمل محفوظ على الهاتف ولا كاميرا ولا زر زائد على الصفحة فقد لا يحسبه المراجع تطبيقاً مستقلاً. إذا كان فتح عنوان الموقع في المتصفح يؤدي العمل نفسه فالمتجر يعدّ الملف زيادة.

Huawei أيضاً قد يرفض النافذة الفارغة والعنوان الذي لا يُفتح. إذا كان الموقع نفسه مليئاً ويعمل على الهاتف فالفرصة أعلى لكنها ليست وعداً. ملف APK التجريبي من Nibras Studio لا يُرسل إلى هذه المراجعة. المتجر يحتاج تجميع إصدار.

إذا أردت أن تصير النافذة تطبيقاً فأضف عملاً واحداً على الأقل للهاتف. احفظ آخر صفحة فُتحت أو أرسل إشعاراً أو خذ صورة واحدة من الكاميرا. الإرسال بلا ذلك يكبّر خطر الرفض.

البيانات والإعلان والمال

النموذج وداخل التطبيق يجب أن يتطابقا. قول «لا أجمع شيئاً» في نموذج سلامة البيانات مع حفظ حساب ورقم إعلان سبب رفض. صفحة الخصوصية يجب أن تكتب تلك القائمة علناً.

  • السلعة الرقمية لا تمر بدفع المتجر نفسه. Play ينتظر Play Billing وHuawei ينتظر دفعه الداخلي.
  • الاشتراك مخفي. السعر وموعد التجدد ليسا بجانب الزر.
  • الإعلان لا يُغلق أو يبدو كتحذير النظام أو يغطّي الزر الرئيسي.
  • تقول إنه للأطفال وفيه إعلان وشراء للكبار. فئة العمر مختارة خطأ.
  • موافقة التتبع لا تُسأل بينما شبكة الإعلان تطلبها.

اسم غيرك والملف نفسه

اسم أو أيقونة أو موسيقى أو صورة أو نص ليس لك يوقف الموافقة. وضع شاشة تطبيق آخر باسمك رفض وخطر على الحساب. صوّر شاشتك.

  • توقيع تجريبي. المتجر لا يقبل مفتاح الاختبار كإصدار أخير.
  • targetSdk قديم. من 31 أغسطس 2026 تطبيق الهاتف يجب أن يستهدف API 36. الهدف الأدنى يعيد الملف.
  • في التحديث versionCode لا يكبر أو اسم الحزمة لا يطابق الملف السابق.
  • المفتاح ليس هو مفتاح الإصدار السابق. المتجر يحسب هذا تطبيقاً جديداً أو تحديثاً مكسوراً.
  • على Huawei مكتبة Google تُسقط الفتح. الهاتف بلا خرائط أو دخول Google أو إشعارات Play يبقى بشاشة فارغة أو مغلقة.

ماذا تفعل حين يأتي الرفض

اقرأ التقرير حتى آخره. غالباً عدة بنود لا سطر واحد. أصلحها كلها ولا تترك واحداً وتعيد الإرسال. صوّر لقطة الشاشة من التطبيق من جديد. افتح صفحة الخصوصية على الهاتف وعلى الحاسوب. اكتب حساب التجربة في حقل الملاحظة.

بعد الإصلاح افتحه على هاتفك وعلى هاتف آخر. إذا كان لـ Huawei فافتحه على جهاز بلا Google أو في الاختبار السحابي. ثم أرسله مع versionCode أكبر. إذا عاد ثلاث مرات للسبب نفسه فقصّر النص واحذف العمل الذي وعدته والتطبيق لا يفعله. إبقاء زر غير موجود في الصفحة يأتي بالرفض التالي.

أمثلة على شاشة سوداء

ملاحظة ويب
ملاحظة ويب
عدّاد
عدّاد
صفحة في الداخل
صفحة في الداخل
ثلاث بطاقات
ثلاث بطاقات
متقدّم
متقدّم

غيّر الكتابة

ملفات تطبيق جاهزة

index.html يقف في جذر هذا الـ zip. بجانبه مجلدا css وjs. يمكن إعطاؤه إلى Studio كما هو.

تنزيل zip الملاحظات

اختر zip الخاص بك

يفتح Nibras Studio وحده فور اختيار الـ zip.