إنشاء تطبيقك من سطر الأوامر

يمكنك تنفيذ جميع مهام الإصدار المتاحة لمشروع Android الخاص بك باستخدام أداة سطر الأوامر Gradle wrapper. ويتوفر هذا البرنامج كملف مجمّع لنظامي التشغيل Windows (gradlew.bat) وكنص برمجي لـ Linux وMac (gradlew.sh)، ويمكن الوصول إليه من جذر كل مشروع تنشئه باستخدام "استوديو Android".

لتشغيل مهمة من خلال برنامج تضمين، استخدِم أحد الأوامر التالية من نافذة المحطة الطرفية (من "استوديو Android"، اختَر عرض > أداة Windows > وحدة طرفية):

  • على نظام التشغيل Windows:
    gradlew task-name
  • على نظام التشغيل Mac أو Linux:
    ./gradlew task-name

للاطّلاع على قائمة بجميع مهام الإصدار المتاحة لمشروعك، نفِّذ tasks:

gradlew tasks

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

إذا كنت تفضّل استخدام أدوات "استوديو Android" بدلاً من أدوات سطر الأوامر، يمكنك الاطّلاع على صفحة إنشاء تطبيقك وتشغيله.

لمحة عن أنواع الإصدارات

يتوفّر نوعان تلقائيًا لكل تطبيق من تطبيقات Android: أحدهما لتصحيح الأخطاء في تطبيقك، وإصدار تصحيح الأخطاء، والآخر لإصدار التطبيق للمستخدمين، وهو إصدار الإصدار. يجب توقيع المخرجات الناتجة من كل إصدار باستخدام شهادة قبل أن تتمكن من نشر تطبيقك على أحد الأجهزة. يتم توقيع إصدار تصحيح الأخطاء تلقائيًا باستخدام مفتاح تصحيح أخطاء توفّره أدوات SDK (إنّه غير آمن ولا يمكنك نشره باستخدامه في "متجر Google Play")، كما يجب توقيع إصدار الإصدار باستخدام مفتاحك الخاص.

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

يمكنك أيضًا تحديد نوع إصدار مخصّص في ملف build.gradle.kts وضبطه ليتم توقيعه كإصدار تصحيح أخطاء، وذلك عن طريق تضمين debuggable true. ولمزيد من المعلومات، راجِع ضبط صيغ الإصدار.

إنشاء حزمة APK ونشرها

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

إنشاء حزمة APK لتصحيح الأخطاء

لاختبار التطبيق وتصحيح الأخطاء بشكل فوري، يمكنك إنشاء حزمة APK لتصحيح الأخطاء. يتم توقيع حزمة APK لتصحيح الأخطاء باستخدام مفتاح تصحيح أخطاء توفره أدوات SDK، وتسمح بتصحيح الأخطاء من خلال adb.

لإنشاء حزمة APK لتصحيح الأخطاء، افتح سطر أوامر وانتقِل إلى جذر دليل المشروع. لبدء إصدار تصحيح الأخطاء، استدعِ المهمة assembleDebug:

gradlew assembleDebug

يؤدي هذا إلى إنشاء ملف APK باسم module_name-debug.apk في project_name/module_name/build/outputs/apk/. سبق أن تم توقيع الملف باستخدام مفتاح تصحيح الأخطاء وتتماشى مع zipalign، لذلك يمكنك تثبيته على الفور على الجهاز.

أو لإنشاء حزمة APK وتثبيتها فورًا على محاكي قيد التشغيل أو جهاز متّصل، استدعِ installDebug بدلاً من ذلك:

gradlew installDebug

جزء "تصحيح الأخطاء" في أسماء المهام أعلاه هو مجرد نسخة على شكل جملة من اسم صيغة الإصدار، لذا يمكن استبداله بأي نوع أو صيغة تريد تركيبه أو تثبيته. على سبيل المثال، إذا كانت لديك صيغة منتج "إصدار تجريبي"، يمكنك إنشاء نسخة تصحيح الأخطاء باستخدام المهمة assembleDemoDebug.

للاطّلاع على جميع مهام الإصدار والتثبيت المتاحة لكل صيغة (بما في ذلك مهام إلغاء التثبيت)، شغِّل مهمة tasks.

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

إنشاء حزمة إصدار أو حِزمة APK

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

نشر تطبيقك في المحاكي

لاستخدام محاكي Android، يجب إنشاء جهاز Android افتراضي (AVD) باستخدام "استوديو Android".

بعد حصولك على AVD، شغِّل محاكي Android وثبِّت تطبيقك على النحو التالي:

  1. في سطر الأوامر، انتقِل إلى android_sdk/tools/ وابدأ المحاكي من خلال تحديد AVD:

    emulator -avd avd_name

    إذا لم تكن متأكدًا من اسم AVD، نفِّذ emulator -list-avds.

  2. يمكنك الآن تثبيت تطبيقك باستخدام إحدى مهام تثبيت Gradle المذكورة في القسم المتعلّق بكيفية إنشاء حزمة APK لتصحيح الأخطاء أو أداة adb.

    إذا تم إنشاء حزمة APK باستخدام حزمة تطوير البرامج (SDK) لمعاينة المطوّر (إذا كان targetSdkVersion حرفًا بدلاً من رقم)، يجب تضمين الخيار -t مع الأمر install لتثبيت حزمة APK تجريبية.

    adb install path/to/your_app.apk
    

    جميع حِزم APK التي تنشئها يتم حفظها في project_name/module_name/build/outputs/apk/.

ولمزيد من المعلومات، يُرجى الاطّلاع على تشغيل التطبيقات على محاكي Android.

نشر تطبيقك على جهاز مادي

قبل تشغيل تطبيقك على أحد الأجهزة، يجب تمكين تصحيح أخطاء USB على جهازك. يمكنك العثور على هذا الخيار ضمن الإعدادات > خيارات المطوّرين.

ملاحظة: في الإصدار 4.2 من نظام التشغيل Android والإصدارات الأحدث، يتم إخفاء خيارات المطوّرين تلقائيًا. لإتاحته، يمكنك الانتقال إلى الإعدادات > لمحة عن الهاتف والنقر على إنشاء رقم سبع مرات. ارجِع إلى الشاشة السابقة للعثور على خيارات المطوّرين.

بعد إعداد جهازك وتوصيله عبر USB، يمكنك تثبيت التطبيق باستخدام مهام تثبيت Gradle المذكورة في القسم المتعلق بكيفية إنشاء حزمة APK لتصحيح الأخطاء أو أداة adb:

adb -d install path/to/your_app.apk

جميع حِزم APK التي تنشئها يتم حفظها في project_name/module_name/build/outputs/apk/.

لمزيد من المعلومات، يُرجى الاطّلاع على تشغيل التطبيقات على جهاز.

إنشاء حِزمة تطبيق

تشتمل حِزم تطبيقات Android على جميع الرموز والموارد المجمّعة لتطبيقك، ولكن مع تأجيل إنشاء APK والتسجيل إلى Google Play. على عكس حزمة APK، لا يمكنك نشر حِزمة تطبيق مباشرةً على الجهاز. لذلك، إذا أردت اختبار ملف APK أو مشاركته مع مستخدم آخر بسرعة، يجب إنشاء ملف APK بدلاً من ذلك.

تتمثل أسهل طريقة لإنشاء حزمة تطبيق في استخدام Android Studio. ومع ذلك، إذا كنت بحاجة إلى إنشاء حزمة تطبيق من سطر الأوامر، يمكنك إجراء ذلك باستخدام Gradle أو bundletool، كما هو موضّح في الأقسام أدناه.

إنشاء حِزمة تطبيق باستخدام Gradle

إذا كنت تفضِّل إنشاء حِزمة تطبيق من سطر الأوامر، يمكنك تشغيل مهمة Gradle bundleVariant على الوحدة الأساسية في تطبيقك. على سبيل المثال، ينشئ الأمر التالي حزمة تطبيق لإصدار تصحيح الأخطاء من الوحدة الأساسية:

./gradlew :base:bundleDebug

إذا أردت إنشاء حزمة موقَّعة لتحميلها إلى Play Console، عليك أولاً ضبط ملف build.gradle.kts للوحدة الأساسية باستخدام معلومات توقيع تطبيقك. لمعرفة مزيد من المعلومات، انتقِل إلى القسم المتعلق بكيفية ضبط Gradle لتوقيع تطبيقك. يمكنك بعد ذلك مثلاً إنشاء إصدار إطلاق لتطبيقك، وستُنشئ Gradle تلقائيًا حزمة تطبيق وتوقّعها باستخدام معلومات التوقيع التي تقدّمها في ملف build.gradle.kts.

إذا أردت بدلاً من ذلك توقيع حِزمة تطبيق كخطوة منفصلة، يمكنك استخدام jarsigner لتوقيع حِزمة تطبيقك من سطر الأوامر. الأمر الخاص بإنشاء حزمة تطبيقات هو:

jarsigner -keystore pathToKeystore app-release.aab keyAlias

إنشاء حِزمة تطبيق باستخدام bundletool

bundletool عبارة عن أداة سطر أوامر يستخدمها كل من Android Studio ومكوِّن Android Gradle ومكوّن Android الإضافي وGoogle Play لتحويل الرموز والموارد المجمّعة لتطبيقك إلى حِزم تطبيقات، وإنشاء حِزم APK قابلة للنشر من هذه الحِزم.

على الرغم من فائدة اختبار حِزم التطبيقات باستخدام bundletool وإعادة إنشاء كيفية إنشاء Google Play لحِزم APK على جهازك، إلا أنّك لن تحتاج عادةً إلى استدعاء bundletool لإنشاء حِزمة التطبيق نفسها، وعليك بدلاً من ذلك استخدام مهام Android Studio أو Gradle، على النحو الموضَّح في الأقسام السابقة.

ومع ذلك، إذا لم تكن تريد استخدام مهام "استوديو Android" أو مهام Gradle لإنشاء حِزم، على سبيل المثال، إذا كنت تستخدم سلسلة أدوات إنشاء مخصّصة، يمكنك استخدام bundletool من سطر الأوامر لإنشاء حِزمة تطبيق من الرموز والموارد المجمّعة مسبقًا. يُرجى تنزيل bundletool من مستودع جيت هب، إذا لم يسبق لك إجراء ذلك.

يوضِّح هذا القسم طريقة تجميع موارد تطبيقك والرموز البرمجية المجمَّعة، وكيفية استخدام bundletool من سطر الأوامر لتحويلها إلى مجموعة حزمات تطبيق Android.

إنشاء البيان والموارد بتنسيق Proto

يتطلب bundletool أن تكون معلومات معيّنة عن مشروع تطبيقك، مثل بيان التطبيق والموارد، بتنسيق مخزن البروتوكولات المؤقت من Google، المعروف أيضًا باسم "protobuf"، ويستخدم امتداد الملف *.pb. توفّر النماذج الأوّلية آلية محايدة لغوية ومحايدة وقابلة للتوسُّع لوضع تسلسل للبيانات المنظَّمة، وهي تشبه تنسيق XML، ولكنها أصغر حجمًا وأسرع وأبسط.

تنزيل AAPT2

يمكنك إنشاء ملف البيان وجدول الموارد لتطبيقك بتنسيق protobuf باستخدام أحدث إصدار من AAPT2 من مستودع Google Maven.

لتنزيل بروتوكول AAPT2 من مستودع Maven الذي يعرضه Google، يمكنك اتّباع الخطوات التالية:

  1. انتقِل إلى com.android.tools.build > aapt2 في فهرس المستودع.
  2. انسخ اسم أحدث إصدار من AAPT2.
  3. أدرِج اسم الإصدار الذي نسخته في عنوان URL التالي وحدِّد نظام التشغيل المستهدَف: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/aapt2-version/aapt2-aapt2-version-[windows | linux | osx].jar

    على سبيل المثال، لتنزيل الإصدار 3.2.0-alpha18-4804415 لنظام التشغيل Windows، عليك استخدام: https://dl.google.com/dl/android/maven2/com/android/tools/build/aapt2/3.2.0-alpha18-4804415/aapt2-3812.alpha

  4. انتقِل إلى عنوان URL في متصفّح، ومن المفترض أن يبدأ تنزيل AAPT2 بعد وقت قصير.

  5. فُكَّ حزمة ملف JAR الذي نزّلته.

استخدِم AAPT2 لتجميع موارد تطبيقك باستخدام الأمر التالي:

aapt2 compile \
project_root/module_root/src/main/res/drawable/Image1.png \
project_root/module_root/src/main/res/drawable/Image2.png \
-o compiled_resources/

خلال مرحلة الربط، حيث يربط AAPT2 الموارد المختلفة المجمّعة في حزمة APK واحدة، عليك توجيه AAPT2 إلى تحويل ملف بيان تطبيقك والموارد المجمّعة إلى تنسيق protobuf من خلال تضمين علامة --proto-format، كما هو موضّح أدناه:

aapt2 link --proto-format -o output.apk \
-I android_sdk/platforms/android_version/android.jar \
--manifest project_root/module_root/src/main/AndroidManifest.xml \
-R compiled_resources/*.flat \
--auto-add-overlay

يمكنك بعد ذلك استخراج المحتوى من حزمة APK للمخرجات، مثل AndroidManifest.xml وresources.pb وملفات الموارد الأخرى لتطبيقك، بتنسيق النموذج الأوّلي. عليك الحصول على هذَين الملفَّين عند تحضير الإدخال تتطلّب ميزة "bundletool" إنشاء حِزمة التطبيق على النحو الموضَّح في القسم التالي.

حزمة التعليمات البرمجية والموارد المجمّعة مسبقًا

قبل استخدام bundletool لإنشاء حِزمة تطبيق لتطبيقك، عليك أولاً تقديم ملفات ZIP يحتوي كل منها على الرمز البرمجي المجمّع والموارد لوحدة تطبيق معيّنة. ويشبه محتوى ملف ZIP لكل وحدة وتنظيمه إلى حد كبير تنسيق مجموعة حزمات تطبيق Android. على سبيل المثال، عليك إنشاء ملف base.zip للوحدة الأساسية لتطبيقك وتنظيم محتواه على النحو التالي:

ملف أو دليل الوصف
manifest/AndroidManifest.xml تمثّل هذه السمة بيان الوحدة بتنسيق "protobuf".
dex/... دليل يحتوي على واحد أو أكثر من ملفات DEX المجمّعة في تطبيقك. يجب تسمية هذه الملفات على النحو التالي: classes.dex وclasses2.dex وclasses3.dex وما إلى ذلك.
res/... تحتوي على موارد الوحدة بتنسيق protobuf لجميع إعدادات الأجهزة. يجب تنظيم الأدلة الفرعية والملفات على نحو مشابه لحزمة APK العادية.
root/... وassets/... وlib/... تتطابق هذه الأدلة مع الأدلّة الموضّحة في القسم المتعلّق بتنسيق حزمة تطبيقات Android.
resources.pb جدول موارد تطبيقك بتنسيق "protobuf"

بعد إعداد ملف ZIP لكل وحدة في تطبيقك، يمكنك تمريره إلى bundletool لإنشاء حِزمة التطبيق، كما هو موضّح في القسم التالي.

إنشاء حِزمة تطبيقك باستخدام bundletool

لإنشاء حِزمة التطبيق، يمكنك استخدام الأمر bundletool build-bundle، كما هو موضّح أدناه:

bundletool build-bundle --modules=base.zip --output=mybundle.aab

يوضِّح الجدول التالي علامات الأمر build-bundle بمزيد من التفاصيل:

إبلاغ الوصف
--modules=path-to-base.zip, path-to-module2.zip,path-to-module3.zip تُحدِّد هذه السياسة قائمة ملفات ZIP التي يجب أن يستخدمها bundletool لإنشاء حِزمة التطبيق.
--output=path-to-output.aab تحدِّد هذه السياسة المسار واسم الملف لملف الإخراج *.aab.
--config=path-to-BundleConfig.json تحدّد المسار إلى ملف إعداد اختياري يمكنك استخدامه لتخصيص عملية التصميم. للاطّلاع على مزيد من المعلومات، راجِع القسم حول تخصيص إنشاء حزمة APK قبل البث المباشر.
--metadata-file=target-bundle-path:local-file-path توجّه هذه السياسة bundletool إلى حِزم ملف بيانات وصفية اختياري داخل حِزمة تطبيقك. يمكنك استخدام هذا الملف لتضمين بيانات، مثل تعيينات ProGuard أو القائمة الكاملة لملفات DEX الخاصة بتطبيقك، والتي قد تكون مفيدة للخطوات الأخرى في سلسلة الأدوات أو متجر التطبيقات.

تحدّد السمة target-bundle-path مسارًا مرتبطًا بجذر حِزمة التطبيق التي تريد تجميع ملف البيانات الوصفية فيها، وتحدّد السمة local-file-path المسار إلى ملف البيانات الوصفية المحلي نفسه.

تخصيص إنشاء حزمة APK بعد استلامه

تشتمل حِزم التطبيقات على ملف BundleConfig.pb يوفّر البيانات الوصفية التي تتطلّبها متاجر التطبيقات، مثل Google Play، عند إنشاء ملفات APK من الحِزمة. على الرغم من أنّ bundletool ينشئ هذا الملف لك، يمكنك ضبط بعض جوانب البيانات الوصفية في ملف BundleConfig.json وتمريره إلى الأمر bundletool build-bundle، وسيحوّل bundletool هذا الملف لاحقًا ويدمجه مع إصدار Protobuf المضمّن في كل حِزمة تطبيق.

على سبيل المثال، يمكنك التحكم في فئات تهيئة ملفات APK المطلوب تفعيلها أو إيقافها. يؤدي المثال التالي لملف BundleConfig.json إلى إيقاف حِزم APK للضبط التي تستهدِف كل منها لغة مختلفة (أي أنه يتم تضمين الموارد لجميع اللغات في حِزم APK الأساسية أو الخاصة بها):

{
  "optimizations": {
    "splitsConfig": {
      "splitDimension": [{
        "value": "LANGUAGE",
        "negate": true
      }]
    }
  }
}

في ملف BundleConfig.json، يمكنك أيضًا تحديد أنواع الملفات التي يجب تركها بدون ضغط عند إنشاء حِزم APK باستخدام أنماط الكرة الأرضية، كما يلي:

{
  "compression": {
    "uncompressedGlob": ["res/raw/**", "assets/**.uncompressed"]
  }
}

يُرجى العِلم أنّ bundletool لا يضغط تلقائيًا المكتبات الأصلية لتطبيقك (على الإصدار 6.0 من نظام التشغيل Android أو الإصدارات الأحدث) وجدول الموارد (resources.arsc). وللحصول على وصف كامل لما يمكنك ضبطه في BundleConfig.json، يمكنك فحص ملف config.proto bundletool الذي تمت كتابته باستخدام بنية Proto3.

نشر تطبيقك من حِزمة تطبيق

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

توقيع تطبيقك من سطر الأوامر

لست بحاجة إلى Android Studio لتوقيع تطبيقك. يمكنك توقيع تطبيقك من سطر الأوامر باستخدام apksigner لحِزم APK أو jarsigner لحِزم التطبيقات، أو إعداد Gradle لتوقيع تطبيقك أثناء إنشائه. وفي كلتا الحالتين، يجب أولاً إنشاء مفتاح خاص باستخدام keytool، كما هو موضّح أدناه:

keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias

يطلب منك المثال أعلاه إدخال كلمات مرور لملف تخزين المفاتيح والمفتاح، وحقلَي "الاسم المميز" لمفتاحك. بعد ذلك، تنشئ الأداة ملف تخزين المفاتيح كملف باسم my-release-key.jks لحفظه في الدليل الحالي (يمكنك نقله إلى أي مكان تريده). ويحتوي ملف تخزين المفاتيح على مفتاح واحد صالح لمدة 10,000 يوم.

يمكنك الآن توقيع حزمة APK أو حِزمة التطبيق يدويًا، أو إعداد تطبيق Gradle لتوقيع تطبيقك أثناء عملية الإنشاء، كما هو موضّح في الأقسام أدناه.

توقيع تطبيقك يدويًا من سطر الأوامر

إذا أردت توقيع حِزمة تطبيق من سطر الأوامر، يمكنك استخدام jarsigner. إذا أردت بدلاً من ذلك توقيع حزمة APK، عليك استخدام zipalign وapksigner كما هو موضّح أدناه.

  1. افتح سطر الأوامر من "استوديو Android" واختَر عرض > أداة Windows > تطبيق طرفي وانتقِل إلى الدليل الذي يتضمّن حزمة APK غير الموقَّعة.
  2. محاذاة حزمة APK غير الموقَّعة باستخدام zipalign:

    zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk
    

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

  3. وقِّع حزمة APK باستخدام مفتاحك الخاص باستخدام apksigner:

    apksigner sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk
    

    يؤدي هذا المثال إلى إخراج ملف APK الموقَّع في my-app-release.apk بعد توقيعه باستخدام مفتاح خاص وشهادة مخزنتَين في ملف تخزين مفاتيح واحد: my-release-key.jks.

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

    ملاحظة: لاستخدام أداة "apksigner"، يجب تثبيت الإصدار 24.0.3 أو الإصدارات الأحدث من "أدوات إنشاء حزمة تطوير البرامج (SDK) لنظام التشغيل Android". يمكنك تحديث هذه الحزمة باستخدام مدير SDK.

  4. التحقُّق من توقيع حزمة APK:

    apksigner verify my-app-release.apk
    

ضبط Gradle لتوقيع تطبيقك

افتح ملف build.gradle.kts على مستوى الوحدة وأضِف مجموعة signingConfigs {} مع إدخالات storeFile وstorePassword وkeyAlias وkeyPassword، ثم أدخِل هذا العنصر إلى السمة signingConfig في نوع الإصدار. مثلاً:

Kotlin


android {
    ...
    defaultConfig { ... }
    signingConfigs {
        create("release") {
            // You need to specify either an absolute path or include the
            // keystore file in the same directory as the build.gradle file.
            storeFile = file("my-release-key.jks")
            storePassword = "password"
            keyAlias = "my-alias"
            keyPassword = "password"
        }
    }
    buildTypes {
        getByName("release") {
            signingConfig = signingConfigs.getByName("release")
            ...
        }
    }
}

رائع

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            // You need to specify either an absolute path or include the
            // keystore file in the same directory as the build.gradle file.
            storeFile file("my-release-key.jks")
            storePassword "password"
            keyAlias "my-alias"
            keyPassword "password"
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            ...
        }
    }
}

الآن، عند إنشاء تطبيقك عن طريق استدعاء مهمة Gradle، ستقوم Gradle بالتوقيع على تطبيقك (وتشغيل محاذاة الانزلاق) نيابة عنك.

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

هناك تطبيق مُوقَّع باستخدام مفتاحك الخاص جاهز للتوزيع، ولكن عليك أولاً قراءة المزيد حول كيفية نشر تطبيقك ومراجعة قائمة التحقق الخاصة بإطلاق Google Play.