أداة تجميع

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

تم إنشاء حِزم تطوير البرامج (SDK) لنظام التشغيل Android (ASBs) وحِزم APK باستخدام bundletool. من المهم أيضًا كأداة سطر أوامر، لذا يمكنك إنشاء حِزم التطبيقات تجمِّع حزمة SDK بياناتك وتعيد إنشاء إصدار Google Play من جهة الخادم لتطبيقك. ملفات APK أو حِزم تطوير البرامج (SDK) التي يتم تفعيلها في وقت التشغيل.

تنزيل bundletool

نزِّل bundletool من إذا لم يسبق لك إجراء ذلك. مستودع GitHub.

إنشاء حِزمة تطبيق واختبارها

يمكنك استخدام "استوديو Android" أو أداة سطر الأوامر bundletool لإنشاء يمكنك استخدام تنسيق Android App Bundle ثم اختبار إنشاء حِزم APK من حِزمة التطبيق هذه.

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

استخدِم "استوديو Android" والمكوّن الإضافي لنظام Gradle المتوافق مع Android من أجل إنشاء مجموعة حزمات تطبيق Android وتوقيعها ومع ذلك، إذا لم يكن استخدام بيئة التطوير المتكاملة (IDE) خيارًا، على سبيل المثال، لأنك تستخدم خادم إصدار مستمر — يمكنك أيضًا إنشاء حِزمة تطبيقك من سطر الأوامر والتوقيع عليه باستخدام jarsigner

لمزيد من المعلومات حول إنشاء حِزم التطبيقات باستخدام "bundletool"، الرؤية إنشاء حزمة تطبيق باستخدام أداة packagetool

إنشاء مجموعة من ملفات APK من حِزمة تطبيقك

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

هناك طريقتان لاختبار حِزمة تطبيقك:

يشرح هذا القسم كيفية استخدام bundletool لاختبار حِزمة تطبيقك على الجهاز.

عندما ينشئ "bundletool" حِزم APK من حِزمة تطبيقك، سيتم تضمين الحزمة التي تم إنشاؤها. حِزم APK في حاوية تُسمى أرشيف مجموعة حِزم APK، وتستخدم الملف .apks الإضافة. لإنشاء حزمة APK متوافقة مع جميع إعدادات الأجهزة، يجب أن يتوفّر تطبيقك من حِزمة تطبيقك، استخدِم الأمر bundletool build-apks، المعروضة:

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

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

bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
--ks=/MyApp/keystore.jks
--ks-pass=file:/MyApp/keystore.pwd
--ks-key-alias=MyKeyAlias
--key-pass=file:/MyApp/key.pwd

يوضّح الجدول التالي العلامات والخيارات المختلفة التي يمكنك ضبطها في الحالات التالية: باستخدام الأمر bundletool build-apks بمزيد من التفصيل:

الجدول 1. الخيارات المتاحة لـ طلب واحد (bundletool build-apks)

إبلاغ الوصف
--bundle=path (مطلوب) تحدِّد المسار إلى حِزمة التطبيق التي أنشأتها باستخدام Android Studio. لمزيد من المعلومات، يُرجى قراءة أنشئ مشروعك:
--output=path (مطلوب) لتحديد اسم الناتج ملف .apks، الذي يحتوي على جميع عناصر APK التطبيق. لاختبار العناصر المدرَجة في هذا الملف على أحد الأجهزة، اتّبِع الخطوات الواردة في القسم المتعلّق بكيفية نشر حِزم APK بجهاز متصل.
--overwrite استبدال أي ملف إخراج موجود باستخدام المسار الذي تحدده باستخدام الخيار --output. إذا كنت لا تضمّن هذه العلامة وملف الإخراج موجود بالفعل، فستحصل على خطأ في الإصدار.
--aapt2=path تحدِّد هذه السياسة مسارًا مخصّصًا لـ AAPT2. يتضمّن bundletool تلقائيًا الإصدار الخاص به من AAPT2.
--ks=path (اختياري) يحدِّد المسار إلى ملف تخزين مفاتيح النشر المُستخدَم للتوقيع على حزم APK. إذا لم تقم بتضمين هذه العلامة، هناك محاولة واحدة (bundletool) لتوقيع حِزم APK باستخدام توقيع تصحيح الأخطاء المفتاح.
--ks-pass=pass:password
أو
--ks-pass=file:/path/to/file
تحدِّد هذه السياسة كلمة مرور ملف تخزين المفاتيح. إذا كنت تحديد كلمة مرور بنص عادي، وتأهُّلها باستخدام pass:. في حال تمرير المسار إلى ملف يحتوي على كلمة المرور، عليك تأهُّل مع file:. فإذا حددت ملف تخزين مفاتيح باستخدام العلامة --ks بدون تحديد --ks-pass، يطلب منك bundletool إدخال كلمة مرور من سطر الأوامر.
--ks-key-alias=alias تحدِّد هذه السياسة الاسم المستعار لمفتاح التوقيع المطلوب. استخدامها.
--key-pass=pass:password
أو
--key-pass=file:/path/to/file
تُحدِّد كلمة المرور لمفتاح التوقيع. إذا كنت تحديد كلمة مرور بنص عادي، وتأهُّلها باستخدام pass:. في حال تمرير المسار إلى ملف يحتوي على كلمة المرور، عليك تأهُّل مع file:.

في حال كانت كلمة المرور هذه مطابقة تمامًا لكلمة المرور لتخزين المفاتيح نفسه، يمكنك حذف هذه العلامة.

--connected-device توجّه هذه السياسة إلى bundletool لإنشاء حِزم APK تستهدف ضبط جهاز متصل. إذا لم تقم بتضمين هذه العلامة، ينشئ تطبيق "bundletool" حِزم APK لجميع إعدادات جهازك. التطبيق.
--device-id=serial-number إذا كان لديك أكثر من جهاز متصل، استخدِم هذه العلامة لتحديد المعرّف التسلسلي للجهاز الذي تريد نشر التطبيق عليه.
--device-spec=spec_json يوفر مسارًا إلى ملف .json الذي يحدد إعدادات الجهاز المطلوبة من استهدافها. لمزيد من المعلومات، انتقِل إلى القسم الخاص بكيفية إنشاء واستخدام ملف JSON لمواصفات الجهاز الملفات.
--mode=universal لضبط الوضع على universal استخدِم هذا الخيار إذا أردت. bundletool لإنشاء حِزمة APK واحدة تشتمل على جميع رمز تطبيقك وموارده، لكي تكون حزمة APK متوافقة مع جميع بإعدادات الجهاز التي يتوافق معها تطبيقك.

ملاحظة: لا تتضمن السمة bundletool سوى وحدات الميزات فقط. التي تحدد <dist:fusing dist:include="true"/> في ملف البيان في حزمة APK عامة. لمزيد من المعلومات، يمكنك الاطّلاع على بيان وحدة الميزات.

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

--local-testing تفعيل حِزمة التطبيق للاختبار المحلي. يسمح الاختبار المحلي بإجراء دورات اختبار متكررة سريعة بدون الحاجة إلى لتحميلها إلى خوادم Google Play.

لعرض مثال على كيفية اختبار تثبيت الوحدات باستخدام تم الإبلاغ عن --local-testing. عمليات تثبيت وحدات الاختبار محليًا:

نشر حِزم APK على جهاز متصل

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

على سبيل المثال، إذا كان لديك جهاز متصل يعمل بالإصدار Android 5.0 (المستوى 21 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث، يدفع bundletool حزمة APK الأساسية وحِزم APK لوحدات الميزات حِزم APK للإعداد المطلوبة لتشغيل تطبيقك على ذلك الجهاز. بدلاً من ذلك، إذا أن جهازك المتصل يعمل بنظام التشغيل Android 4.4 (المستوى 20 لواجهة برمجة التطبيقات) أو أقل، يبحث تطبيق bundletool عن حِزم APK متعددة متوافقة لنشرها على جهازك.

لنشر تطبيقك من خلال مجموعة حِزم APK، استخدِم الأمر install-apks وحدِّد مسار مجموعة APK باستخدام ملف تم الإبلاغ عن --apks=/path/to/apks باسم كما هو موضح في الأمر التالي. إذا كان لديك أجهزة متعددة متصلة، لتحديد جهاز مستهدف من خلال إضافة علم واحد (--device-id=serial-id)

bundletool install-apks --apks=/MyApp/my_app.apks

إنشاء مجموعة حِزم APK خاصة بالجهاز

إذا كنت لا تريد إنشاء مجموعة من حِزم APK لجميع إعدادات الأجهزة، سيستخدم تطبيقك يمكنك إنشاء حِزم APK لا تستهدف سوى إعدادات باستخدام الخيار --connected-device كما هو موضح في الأمر التالي. في حال توصيل عدة أجهزة، يمكنك تحديد جهاز مستهدَف من خلال تضمين علم واحد (--device-id=serial-id)

bundletool build-apks --connected-device
--bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

إنشاء ملفات JSON لمواصفات الجهاز واستخدامها

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

bundletool get-device-spec --output=/tmp/device-spec.json

تنشئ ميزة "bundletool" ملف JSON لجهازك في دليل الأداة. إِنْتَ يمكننا بعد ذلك تمرير الملف إلى bundletool لإنشاء مجموعة من ملفات APK التي استهداف الإعدادات الموضَّحة في ملف JSON فقط على النحو التالي:

bundletool build-apks --device-spec=/MyApp/pixel2.json
--bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks

إنشاء ملف JSON لمواصفات الجهاز يدويًا

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

{
  "supportedAbis": ["arm64-v8a", "armeabi-v7a"],
  "supportedLocales": ["en", "fr"],
  "screenDensity": 640,
  "sdkVersion": 27
}

يمكنك بعد ذلك تمرير ملف JSON هذا إلى الأمر bundle extract-apks على النحو الموضّح. في القسم السابق.

استخراج حِزم APK خاصة بالجهاز من مجموعة حالية من APK

إذا كانت لديك مجموعة حالية من ملفات APK وأردت استخراج منها مجموعة فرعية من ملفات APK التي تستهدف إعدادات معيّنة للأجهزة، يمكنك استخدام extract-apks وتحديد JSON لمواصفات الجهاز، على النحو التالي:

bundletool extract-apks
--apks=/MyApp/my_existing_APK_set.apks
--output-dir=/MyApp/my_pixel2_APK_set.apks
--device-spec=/MyApp/bundletool/pixel2.json

قياس أحجام التنزيل المقدَّرة لملفات APK في مجموعة APK

قياس أحجام التنزيل المقدَّرة لملفات APK في حزمة APK تم ضبطها على النحو المطلوب مضغوطة عبر السلك، استخدم الأمر get-size total:

bundletool get-size total --apks=/MyApp/my_app.apks

يمكنك تعديل سلوك الأمر get-size total باستخدام العلامات التالية:

الجدول 2. الخيارات المتاحة لـ طلب واحد (get-size total)

إبلاغ الوصف
--apks=path (مطلوب) تحدِّد المسار إلى ملف مجموعة APK الحالي. الذين يتم قياس حجم تنزيلهم.
--device-spec=path تحدد المسار إلى ملف مواصفات الأجهزة (من get-device-spec أو يتم إنشاؤها يدويًا) لاستخدامها في المطابقة. يمكنك تحديد مسار جزئي لتقييم مجموعة من الإعدادات.
--dimensions=dimensions تحدد الأبعاد المستخدمة عند حساب تقديرات الحجم. يتم قبولها قائمة مفصولة بفواصل من: SDK، ABI، SCREEN_DENSITY، وLANGUAGE. للقياس على مستوى جميع الأبعاد، حدِّد ALL.
--instant يقيس حجم تنزيل حِزم APK التي تم تفعيل ميزة التطبيقات الفورية فيها بدلاً من حِزم APK قابلة للتثبيت. بشكل تلقائي، يقيس bundletool أحجام تنزيل APK القابلة للتثبيت.
--modules=modules تحدّد هذه السياسة قائمة مفصولة بفواصل من الوحدات المتوفّرة في حزمة APK التي يجب أخذها في الاعتبار. في القياس. الأمر bundletool تلقائيًا تتضمن أي وحدات تابعة للمجموعة المحددة. بشكل افتراضي، يقيس الأمر حجم تنزيل جميع الوحدات التي تم تثبيتها أثناء أول عملية تنزيل.

إنشاء حِزمة تطبيق باستخدام اعتمادية حِزمة SDK (إصدار تجريبي)

يمكنك إنشاء "مجموعة حزمات تطبيق Android" باستخدام الاعتماد على حزمة تطوير البرامج (SDK) لنظام التشغيل Android (ASB). من سطر الأوامر والتوقيع عليه باستخدام jarsigner.

تتضمن كل وحدة حِزمة تطبيق ملف مخزن بروتوكولات الوحدة النمطية (.pb): runtime_enabled_sdk_config.pb يحتوي هذا الملف على قائمة بحِزم تطوير البرامج (SDK). التي تعتمد عليها وحدة حِزمة التطبيق للحصول على التعريف الكامل لهذا الملف، اطّلِع على runtime_enabled_sdk_config.proto.

لإنشاء حِزمة تطبيق تعتمد على حزمة SDK، اتّبِع الخطوات الواردة في القسم بشأن إنشاء حِزمة تطبيق باستخدام أداة packagetool وإضافة ملف واحد (runtime_enabled_sdk_config.pb) إلى ملف zip لكل وحدة تطبيق ملف يحتوي على تعليمات برمجية وموارد مجمعة.

بعض الحقول البارزة في ملف runtime_enabled_sdk_config.pb:

  • ملخّص الشهادة: ملخّص SHA-256 لشهادة المفتاح المستخدم لتوقيع حزم APK لحزمة SDK. ويتوافق هذا مع الشهادة في SdkMetadata.pb بتنسيق أرشيف حزمة تطوير البرامج (SDK) لنظام التشغيل Android.

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

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

إنشاء حِزم APK من حِزمة تطبيق تعتمد على حزمة SDK (إصدار تجريبي)

لإنشاء حِزم APK من حِزمة تطبيقك، اتّبِع الخطوات الواردة في القسم حول إنشاء مجموعة من حِزم APK من حِزمة تطبيقك أو القسم المتعلق إنشاء مجموعة حِزم APK خاصة بالجهاز وتزويدنا بالأمر bundletool build-apks مع حِزم تطوير البرامج (SDK) التي التي يعتمد عليها التطبيق. يمكن تقديم حِزم تطوير البرامج (SDK) هذه بتنسيق حزمة SDK أو حزمة SDK. تنسيق الأرشيف.

يمكنك تقديم حِزم تطوير البرامج (SDK) كحِزم SDK من خلال إضافة علامة --sdk-bundles باعتبارها التالي:

bundletool build-apks --bundle=app.aab --sdk-bundles=sdk1.asb,sdk2.asb \
    --output=app.apks

يمكنك تقديم حِزم تطوير البرامج (SDK) كأرشيفات لحِزم SDK من خلال إضافة العلامة --sdk-archives على النحو التالي:

bundletool build-apks --bundle=app.aab --sdk-archives=sdk1.asar,sdk2.asar \
    --output=app.apks
إنشاء حِزم APK من حِزمة تطبيق تعتمد على حِزمة SDK للأجهزة غير المتوافقة مع مكتبة حِزم SDK

إنّ الأجهزة التي تسبق Android 13 لا تتيح تثبيت مكتبات حِزم SDK أو تشغيلها. في وقت تشغيل SDK. تخفي الأداة تعقيد التوافق مع الأنظمة القديمة ينشئ صيغًا متعددة من حزمة APK من حزمة التطبيق نفسها عند شغِّل تطبيق bundletool build-apks مع الخيار --sdk-bundles أو --sdk-archives. تستهدف الصيغ المتعددة أجهزة بإمكانيات مختلفة:

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

كما هو الحال في طريقة إنشاء حِزم APK لحِزم التطبيقات التي لا تعتمد على اعتماديات حِزم SDK، تعرض bundletool extract-apks وbundletool install-apks مجموعة مفلتَرة من حِزم APK من أفضل صيغة للجهاز المتصل أو للجهاز المقدَّم .

بالنسبة إلى حالات الاستخدام المتقدّمة التي تكون مهتمًا فيها فقط بإنشاء أقسام لحِزم APK من أرشيف حزمة تطوير البرامج (SDK) لتطبيق معيّن على الأجهزة القديمة، استخدِم bundletool build-sdk-apks-for-app على النحو التالي:

bundletool build-sdk-apks-for-app --app-properties=app-properties.json \
    --sdk-archive=sdk.asar --output=sdk.apks

يجب أن يحتوي ملف app-properties على الحقول الموضّحة في ملف runtime_enabled_sdk_config.proto. إليك ما تم في app-properties الملف على النحو التالي:

{
  "package_name": "com.my.app",
  "version_code": 1234,
  "min_sdk_version": 21,
  "resources_package_id": 0x7e
}

ينشئ الأمر bundletool build-sdk-apks-for-app مجموعة فرعية من التطبيق حِزم APK التي تتوافق مع محتوى حزمة تطوير البرامج (SDK) ضمن اسم حزمة التطبيق. يمكنك دمج حِزم APK هذه مع حِزم APK أخرى تشتمل على محتوى التطبيق. على سبيل المثال، إذا يمكنك إنشاؤها بشكل منفصل وبشكل تدريجي، وتثبيتها معًا على أحد الأجهزة لا يتوافق مع وقت تشغيل حزمة تطوير البرامج (SDK).

إنشاء حزمة SDK واختبارها (إصدار تجريبي)

يمكنك استخدام bundletool لإنشاء ASB واختبار إنشاء الملفات اللازمة للتثبيت والتوزيع.

إنشاء حزمة SDK

يمكنك إنشاء ASB من سطر الأوامر وتوقيعه استخدام jarsigner.

لإنشاء حزمة SDK، يُرجى اتّباع الخطوات التالية:

  1. إنشاء ملف البيان والموارد الخاصة بحزمة SDK بتنسيق Proto من خلال اتّباع الخطوات نفسها المتّبعة في حِزمة التطبيق

  2. عليك إضافة الموارد والرمز البرمجي لحزمة SDK التي تم تجميعها في ملف ZIP أساسي، كما تفعل مع وحدة التطبيق.

  3. إنشاء ملف SdkModulesConfig.pb.json وSdkBundleConfig.pb.json يتطابق مع التنسيق الموضح في ملف مواصفات حزمة تطوير البرامج (SDK) لنظام التشغيل Android

  4. يمكنك إنشاء ASB باستخدام الأمر bundletool build-sdk-bundle باسم التالي:

bundletool build-sdk-bundle --sdk-bundle-config=SdkBundleConfig.pb.json \
    --sdk-modules-config=SdkModulesConfig.pb.json \
    --modules=base.zip --output=sdk.asb

يوضّح الجدول التالي العلامات والخيارات المختلفة التي يمكنك ضبطها في الحالات التالية: باستخدام الأمر bundletool build-sdk-bundle بمزيد من التفصيل.

الجدول 3. الخيارات المتاحة لـ طلب واحد (bundletool build-sdk-bundle)

إبلاغ الوصف
--modules (مطلوب) ملف الوحدة الذي ترغب في إنشاء النموذج النهائي له ASB من.
--output (مطلوب) المسار إلى المكان الذي تريد إنشاء ASB فيه.
--sdk-modules-config (مطلوب) المسار إلى ملف JSON الذي يصف الإعداد من وحدات حزمة تطوير البرامج (SDK) لمعرفة طريقة تنسيق ملف JSON، يمكنك الاطّلاع على قسم مواصفات حزمة تطوير البرامج (SDK) لنظام التشغيل Android
--sdk-bundle-config يشير هذا المصطلح إلى المسار إلى ملف JSON يصف الإعدادات. لحزمة SDK. لمعرفة طريقة تنسيق ملف JSON، يمكنك الاطّلاع على قسم مواصفات حزمة تطوير البرامج (SDK) لنظام التشغيل Android
--metadata-file الملف المراد تضمين بيانات التعريف فيه لـ ASB. تنسيق قيمة العلامة هو <bundle-path>:<physical-file>, حيث يشير <bundle-path> إلى موقع الملف داخل دليل البيانات الوصفية لحزمة SDK و<physical-file> هو ملف حالي يحتوي على البيانات الأولية المراد تخزينها. يمكن أن يكون العلم متكررة.
--overwrite وفي حال ضبط هذا الخيار، سيتم استبدال أي نتائج حالية سابقة.

إنشاء حِزم APK من حِزمة SDK

بعد إنشاء ASB، يمكنك اختبار حزمة SDK محليًا عن طريق إنشاء حِزم APK باستخدام الأمر bundletool build-sdk-apks، كما هو موضّح في التعليمة البرمجية التالية:

bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks

عندما ينشئ bundletool حِزم APK من حِزمة SDK، تتضمن الأداة ملفات APK في حاوية تُسمى أرشيف مجموعة حِزم APK، وتستخدم الملف .apks الإضافة. تُنشئ حزمة تطوير البرامج (SDK) حِزمة APK مستقلة واحدة من قِبل "bundletool" تستهدف جميع تهيئات الأجهزة.

إذا كنت ترغب في نشر ASB على أحد الأجهزة، يلزمك أيضًا تضمين معلومات التوقيع كما هو موضح في الأمر التالي:

bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks \
    --ks=keystore.jks \
    --ks-pass=file:/keystore.pwd \
    --ks-key-alias=KeyAlias \
    --key-pass=file:/key.pwd

يوضّح الجدول التالي العلامات والخيارات المختلفة التي يمكنك ضبطها في الحالات التالية: باستخدام الأمر bundletool build-sdk-apks بمزيد من التفصيل.

الجدول 4. الخيارات المتاحة لـ طلب واحد (bundletool build-sdk-apks)

إبلاغ الوصف
--sdk-bundle (مطلوب) المسار إلى حزمة SDK. يجب الحصول على الامتداد .asb
--output (مطلوب) بشكل افتراضي، يتم تحديد المسار الذي تريد فيه أرشيف مجموعة APK ليتم إنشاؤها. بدلاً من ذلك، إذا كنت تستخدم --output-format=DIRECTORY, هذا هو المسار المؤدّي إلى الدليل الذي تريد تخزين حِزم APK التي تمّ إنشاؤها فيه.
--ks المسار إلى ملف تخزين المفاتيح الذي تريد استخدامه لتوقيع حِزم APK التي تم إنشاؤها.
--ks-key-alias يُستخدم الاسم المستعار للمفتاح في ملف تخزين المفاتيح لتوقيع حِزم APK التي تم إنشاؤها.
--key-pass

تمثل كلمة المرور الخاصة بالمفتاح في ملف تخزين المفاتيح والمطلوب استخدامها لتوقيع الملف حِزم APK.

إذا أدخلت كلمة المرور بنص واضح، عليك إضافة بادئة إلى القيمة مع pass:. مثلاً: pass:qwerty إذا كانت كلمة المرور هي السطر الأول من الملف، يجب عليك بادئة القيمة مع file:. على سبيل المثال: file:/tmp/myPassword.txt

إذا لم يتم تعيين هذه العلامة، فسيستخدم ملف تخزين المفاتيح تم محاولة استخدام كلمة المرور. إذا لم ينجح ذلك، فستطالبك الوحدة الطرفية لسطر الأوامر وكلمة مرور.

--ks-pass

كلمة مرور ملف تخزين المفاتيح المطلوب استخدامها لتوقيع حِزم APK التي تم إنشاؤها.

إذا أدخلت كلمة المرور بنص واضح، عليك إضافة بادئة إلى القيمة مع pass:. مثلاً: pass:qwerty إذا كانت كلمة المرور هي السطر الأول من الملف، فيجب أن تبدأ القيمة file: على سبيل المثال: file:/tmp/myPassword.txt

إذا لم يتم تعيين هذه العلامة، فسيتم سطر الأوامر يطلب منك إدخال كلمة مرور.

--aapt2 مسار البرنامج الثنائي AAPT2 لاستخدامه.
--output-format تنسيق الناتج لحِزم APK التي تم إنشاؤها يتم تعيين هذا الخيار افتراضيًا على APK_SET، الذي يعمل على إخراج ملفات APK في أرشيف مجموعة APK والذي إنشاء. في حال ضبط هذه السياسة على DIRECTORY، يتم إخراج حِزم APK في الدليل المحدد بواسطة --output.
--verbose في حال ضبط هذا الخيار، يطبع هذا الخيار معلومات إضافية حول تنفيذ الأمر في المخرجات القياسية.
--version-code تمثّل هذه السمة رمز إصدار حزمة تطوير البرامج (SDK). هذا هو رمز الإصدار الذي يستخدمه نظام Android الأساسي. لتثبيت حزمة APK، وليس إصدار حزمة SDK. يمكن ضبط هذا الخيار على قيمة عشوائية. وفي حال ترك هذه السياسة بدون ضبط، يتم ضبط القيمة التلقائية على 0.
--overwrite وفي حال ضبط هذا الخيار، سيتم استبدال أي نتائج حالية سابقة.

نشر حِزم تطوير البرامج (SDK) واستخراجها وقياس حجمها

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

إنشاء أرشيف SDK من حزمة SDK

بعد تحميل ASB إلى قناة التوزيع، Google Play، يتم تحويل ASB إلى حزمة SDK لنظام التشغيل Android الأرشيف (.asar) لتوزيعه على مطوّري التطبيقات من خلال Maven. لمزيد من المعلومات، التفاصيل حول التنسيق، راجع القسم الذي يتناول مواصفات تنسيق أرشيف حزمة SDK:

بعد إنشاء ASB الخاص بك، يمكنك اختبار إنشاء أرشفة حزمة تطوير البرامج (SDK) لنظام التشغيل Android على الجهاز باستخدام الأمر bundletool build-sdk-asar، باسم كما هو موضح في التعليمة البرمجية التالية:

bundletool build-sdk-asar --sdk-bundle=sdk.asb --output=sdk.asar \
    --apk-signing-key-certificate=keycert.txt

يوضّح الجدول التالي العلامات والخيارات المختلفة التي يمكنك ضبطها في الحالات التالية: باستخدام الأمر bundletool build-sdk-asar بمزيد من التفصيل.

الجدول 5: الخيارات المتاحة لـ طلب واحد (bundletool build-sdk-asar)

إبلاغ الوصف
--apk-signing-key-certificate (مطلوب) المسار إلى شهادة توقيع حزمة SDK لحزمة تطوير البرامج (SDK) هذه هي شهادة تتوافق مع المفتاح الذي استخدمته لتوقيع حِزم APK في الأمر build-sdk-apks.
--output (مطلوب) المسار الذي تريد إنشاء ملف .asar فيه إنشاء.
--sdk-bundle (مطلوب) المسار إلى حزمة SDK. يجب الحصول على الامتداد .asb
--overwrite وفي حال ضبط هذا الخيار، سيتم استبدال أي نتائج حالية سابقة.

تنسيقات حزمة تطوير البرامج (SDK) التي يتم تفعيلها في وقت التشغيل (ميزة تجريبية)

توفِّر حِزم تطوير البرامج (SDK) التي يتم تفعيلها في وقت التشغيل تنسيقَين لملفات Android:

تنسيق حزمة تطوير البرامج (SDK) لنظام التشغيل Android

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

حزمة تطوير البرامج (SDK) لنظام التشغيل Android (ASB) هي ملف ZIP تم توقيعه بالامتداد .asb يتم تنظيم رمز حزمة SDK ومواردها بشكل مشابه لما قد تفعله العثور عليها في APK. يحتوي ASB أيضًا على العديد من ملفات التهيئة التي تساعدك إنشاء حِزم APK قابلة للتثبيت.

الشكل 1. محتويات حزمة تطوير البرامج (SDK) لنظام التشغيل Android

تصف القائمة التالية بعض ملفات ASB بمزيد من التفاصيل:

  • SdkBundleConfig.pb: ملف إعداد بتنسيق Proto، يحتوي على قائمة بحِزم تطوير البرامج (SDK) التي يتم تفعيلها في وقت التشغيل والتي تعتمد عليها حزمة SDK لعرض كامل تعريف، انظر sdk_bundle_config.proto الملف.

  • modules.resm: ملف ZIP يحتوي على جميع البيانات اللازمة لإنشاء حِزم APK من حزمة تطوير البرامج (SDK).

  • SdkModulesConfig.pb: ملف إعداد بتنسيق أولي. هذا الملف يحتوي على اسم حزمة SDK وإصدارها وفئتها لنقطة إدخال حزمة SDK إطار العمل (SandboxedSdkProvider). للاطلاع على التعريف الكامل، يمكنك الاطلاع على ملف sdk_modules_config.proto.

  • base/: الوحدة الوحيدة التي تحتوي على رمز حزمة SDK ومواردها

    • manifest/: بيان حزمة تطوير البرامج (SDK) بتنسيق Proto.
    • dex/: الرمز البرمجي بتنسيق DEX يمكن توفير ملفات DEX متعددة.
    • res/ وlib/ وassets/: تتطابق هذه الأدلة مع تلك الموجودة في تنسيق APK العادي. يتم الاحتفاظ بالمسارات في هذه الأدلة عند إنشاء حِزم APK الخاصة بحزمة تطوير البرامج (SDK).
    • root/: يخزِّن هذا الدليل الملفات التي تم نقلها لاحقًا إلى الجذر. حِزم APK لحزمة تطوير البرامج (SDK). على سبيل المثال، قد تتضمن موارد تستند إلى Java التي تحمِّلها حزمة تطوير البرامج (SDK) باستخدام Class.getResource() . يتم أيضًا حفظ المسارات ضمن هذا الدليل.
  • BUNDLE-METADATA: يتضمّن هذا الدليل ملفات بيانات وصفية تحتوي على معلومات مفيدة للأدوات أو متاجر التطبيقات. قد تؤدي ملفات بيانات التعريف هذه أن تتضمّن عمليات ربط ProGuard والقائمة الكاملة لملفات DEX في حزمة تطوير البرامج (SDK) لا يتم جمع الملفات من هذا الدليل في حِزم APK الخاصة بحزمة تطوير البرامج (SDK).

تنسيق أرشيف حزمة تطوير البرامج (SDK) لنظام التشغيل Android

أرشيف حزمة تطوير البرامج (SDK) لنظام التشغيل Android هو تنسيق توزيع حزمة SDK يتم تفعيلها في وقت التشغيل على Maven. وهو ملف ZIP بامتداد الملف .asar. الملف ويحتوي على جميع المعلومات التي تحتاجها أدوات إنشاء التطبيق لإنشاء إحدى حزمات تطبيق Android التي تعتمد على حزمة تطوير البرامج (SDK) التي يتم تفعيلها في وقت التشغيل.

الشكل 2. محتويات حزمة أرشيف حزمة تطوير البرامج (SDK) لنظام التشغيل Android

توضّح القائمة التالية بعض ملفات أرشيف حزمة تطوير البرامج (SDK) لنظام التشغيل Android في التفاصيل:

  • SdkMetadata.pb: ملف إعداد بتنسيق أولي يحتوي على اسم حزمة SDK وإصدارها وملخّص الشهادة للمفتاح المُستخدَم لتوقيع ملفات APK التي تم إنشاؤها لحزمة تطوير البرامج (SDK) هذه للاطلاع على التعريف الكامل، يمكنك الاطلاع على sdk_metadata.proto الملف.

  • modules.resm: ملف ZIP يحتوي على جميع البيانات اللازمة لإنشاء حِزم APK من حزمة تطوير البرامج (SDK). ويتطابق هذا الملف مع ملف .resm في حزمة تطوير البرامج (SDK) لنظام التشغيل Android

  • AndroidManifest.xml: ملف بيان حزمة تطوير البرامج (SDK) بتنسيق XML نصي

مصادر إضافية

لمعرفة المزيد من المعلومات حول استخدام "bundletool"، يمكنك مشاهدة حِزم التطبيقات: اختبار الحِزم باستخدام أداة packagetool وPlay Console