إذا كنت لا تزال تستخدم المكوّن الإضافي ميزات Android Gradle
(com.android.feature
) الذي تم إيقافه نهائيًا لوحدات "تطبيق Android الفوري"، يجب نقل البيانات إلى
استخدام المكوّن الإضافي الأساسي للتطبيقات (com.android.application
)
والمكوّن الإضافي للميزات الديناميكية (com.android.dynamic-feature
).
في الإصدار 3.3.0 من المكوِّن الإضافي Gradle لنظام التشغيل Android والإصدارات الأحدث، يتوافق المكوِّن الإضافي للتطبيق الأساسي مع التجارب الفورية. ويعني ذلك أنّه إذا كانت وحدة التطبيق الأساسية تستوفي متطلبات توفير تجربة فورية، ستحصل على الميزة تلقائيًا. ويمكنك بعد ذلك تضمين ميزات إضافية يمكن للمستخدمين تنزيلها عند الطلب كتجارب فورية باستخدام المكوّن الإضافي "الميزات الديناميكية". يسهّل هذا الإعداد دعم تجربة التطبيقات المثبّتة والفورية على حد سواء من خلال مشروع واحد، كما يتيح لك الاستفادة من النشر باستخدام مجموعة حزمات تطبيق Android.
يصف الجدول التالي بشكل أفضل المكوّنات الإضافية التي سيتم النقل إليها:
وصف الوحدة | مكوِّن إضافي قديم | المكوّن الإضافي الحالي |
---|---|---|
الوحدة التي تتضمّن الرموز الأساسية والموارد والوظائف لتجربة التطبيقات المثبّتة أو الفورية | com.android.feature (مع baseFeature = true )
|
com.android.application
ملاحظة: تتضمَّن هذه الوحدة جميع معلومات البيان والتوقيع المطلوبة لإنشاء تطبيقك وحزمه على شكل حِزمة APK أو مجموعة حزمات تطبيق Android. |
ميزات إضافية نموذجية يمكن للمستخدمين تنزيلها عند الطلب | com.android.feature |
com.android.dynamic-feature (مع تضمين
dist:instant="true"
وdist:onDemand="false" في بيان الوحدة) |
رمز ومورد ميزة متاحة فقط للإصدار المثبّت من تطبيقك. | com.android.application |
com.android.dynamic-feature (مع تضمين
dist:instant="false" وdist:onDemand="false"
في بيان الوحدة) |
توضِّح لك هذه الصفحة كيفية نقل مشروعك الحالي في تطبيقك الفوري لإنشاء حزمة تطبيقات Android يتم تفعيلها بشكلٍ فوري. يشرح الدليل أيضًا كيفية إنشاء مجموعة حزمات تطبيق Android واختبارها ونشرها.
إذا كنت تنشئ تجارب فورية جديدة لتطبيقك، يمكنك بدلاً من ذلك الاطّلاع على إنشاء وحدة ميزات تمّ تفعيل ميزة التطبيقات الفورية فيها.
فهم التغييرات
عند نقل مشروعك لاستخدام المكوّن الإضافي "الميزات الديناميكية" بدلاً من ذلك، توفّر تنسيقات Android App Bundle طريقة جديدة لإنشاء تطبيقك ونشره تبسّط بشكل كبير عملية توزي�� حِزم APK المحسَّنة للمستخدمين.
تعمل حِزم التطبيقات على تبسيط التوزيع من خلال تجميع كل الرموز والموارد المجمّعة ف�� ت��بيقك ل��حميلها، ولكنها تؤخّر إنشاء حزمة APK والتوقيع على Google Play. بعد ذلك، يستخدم نموذج عرض التطبيقات الجديد في Google Play حِزمة تطبيقك لإنشاء وعرض ملفات APK محسّنة لإعدادات الجهاز لدى كل مستخدم، بحيث يتم تنزيل الرموز البرمجية والموارد التي يحتاجها المستخدم فقط لتشغيل تطبيقك. لم يعد من الضروري إنشاء عدة حِزم APK وتوقيعها وإدارتها لإتاحة استخدام أجهزة مختلفة، وسيصبح المستخدمون أصغر حجمًا ومحسَّنًا.
عند استخدام المكوّن الإضافي للميزة الذي تم إيقافه، كان إنشاء تطبيق فوري يتطلب إنشاء وحدة ميزات أساسية تحتوي على الرمز المشترك والموارد المشتركة لجميع وحداتك، بما في ذلك وحدة التطبيق الفوري. وتم تضمين الجزء المتبقي من الرمز في وحدات متعددة للميزات غير الأساسية، والتي تحتوي على نقاط دخول لتجاربك الفورية. بالنسبة إلى الإصدار المثبت من تطبيقك، قد يتضمن مشروعك وحدة تطبيق منفصلة، تحتوي على التعليمات البرمجية والأنشطة المطلوبة فقط لتطبيقك المثبت.
عند نقل بيانات تطبيقك للتوافق مع تنسيق "مجموعة حزمات تطبيق Android"، تستعيد وحدة تطبيقك دور الوحدة الأساسية، وتنظِّم التجارب الإضافية المثبّتة أو الفورية كوحدات ميزات. وهذا يعني أنّ مشروعك الآن يشبه إلى حدّ كبير مشروع تطبيق عادي، مع توفّر وحدة أساسية مفعّلة فورية وإمكانية تضمين تجارب فورية إضافية نموذجية.
لنقل مشروع تطبيقك الفوري الحالي واستخدام نموذج التوزيع الأكثر تحسينًا في "مجموعة حزمات تطبيق Android"، يُرجى اتّباع الخطوات الموضّحة في الأقسام أدناه.
تحويل وحدة الميزات الأساسية إلى وحدة تطبيق
عليك أولاً تعديل ملف build.gradle
لوحدة الميزات الأساسية قبل
تحويله إلى وحدة التطبيق الرئيسية على النحو التالي:
- احذف سطر
baseFeature true
. أزِل أي تبعيات تستخدم إعدادات التبعية
feature
أوapplication
.رائع
dependencies { ... // delete any lines that look like // feature project(":foo") // feature project(":bar") // application project(":app") }
Kotlin
dependencies { ... // delete any lines that look like // feature(project(":foo")) // feature(project(":bar")) // application(project(":app")) }
يمكنك نقل "
applicationId
" مع أي إعدادات أخرى خاصة بإنشاء النصوص البرمجية التي تتوقعها في وحدة التطبيق الأساسية، من وحدة "com.android.application
" الحالية إلى الوحدة "com.android.feature
". بعض الأمثلة موضحة أدناه. لتنفيذ هذه الخطوة، واستنادًا إلى إعدادbuild.gradle
المحدّد، قد يكون من الأسهل نسخ مجموعةandroid
منbuild.gradle
من وحدة التطبيق السابقة ولصقها في ملفbuild.gradle
الخاص بوحدة التطبيق الجديدة. ومع ذلك، يجب توخي الحذر عند القيام بذلك.رائع
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
Kotlin
android { ... defaultConfig { // You need to move the application ID from the app module // to your feature module. applicationId = "com.example.myapp" ... } // Some additional build configurations you might want to // copy from your current ‘app’ module may include ProGuard // rules and code shrinking settings. buildTypes { getByName("release") { minifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) } } }
ضع علامة على وحدة الميزة تشير إلى تفعيل ميزة التطبيقات الفورية فيها عن طريق إضافة علامات توزيع الحزمة المناسبة إلى بيان التطبيق، كما هو موضّح أدناه.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" /> ... </manifest>
حوّل وحدة الميزات إلى وحدة التطبيق الأساسية من خلال تغيير نوع المكوِّن الإضافي إلى
com.android.application
:رائع
// Replace "plugins { id 'com.android.feature' }" // with the following plugins { id 'com.android.application' }
Kotlin
// Replace "plugins { id("com.android.feature") }" // with the following plugins { id("com.android.application") }
تحويل وحدة التطبيق القديمة إلى وحدة ميزة وقت التثبيت
إذا لم يكن لديك أي رمز أو موارد في وحدة التطبيق القديمة، يمكنك ببساطة حذفها، لأنّ الخطوات التي اتّبعتها في القسم السابق حوّلت وحدة الميزات إلى وحدة تطبيق أساسية لتطبيقك.
ومع ذلك، إذا كان لديك رموز برمجية وموارد في وحدة التطبيق القديمة تمثّل وظائف تريد أن تصبح متاحة للمستخدمين عند ��ثبيت تطبيقك، اتّبِع الخطوات الواردة في هذا القسم لتحويل وحدة التطبيق إلى وحدة ميزة.
يتضمن إنشاء وحدة ميزات تغيير نوع المكوِّن الإضافي من
com.android.application
إلى com.android.dynamic-feature
، بالإضافة إلى بعض
التغييرات الأخرى على build.gradle
، كما يلي:
غيِّر نوع المكوِّن الإضافي من
com.android.application
إلىcom.android.dynamic-feature
.رائع
// Replace "plugins { id 'com.android.feature' }" // with the following: plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "plugins { id("com.android.application") }" // with the following: plugins { id("com.android.dynamic-feature") }
كما هو موضّح في القسم السابق، تأكَّد من نقل إعدادات الإصدار التي يطلبها المكوّن الإضافي
com.android.application
إلى وحدة التطبيق الأساسية، مثل القاعدتينapplicationId
أوproguardFiles
.أعد تسمية الوحدة إلى شيء مثل "installed_feature" (التثبيت) على النحو التالي:
- افتح جزء المشروع من خلال اختيار عرض > نوافذ الأدوات > المشروع من شريط القوائم.
- انقر بزر الماوس الأيمن على وحدة الميزات وحدد إعادة العوامل > إعادة التسمية.
- في مربّع الحوار الذي يظهر، اختَر إعادة تسمية الوحدة وانقر على حسنًا.
- أدخِل الاسم الجديد للوحدة وانقر على حسنًا.
على غرار الخطوة 3، أعد تسمية وحدة التطبيق الجديدة التي أنشأتها في القسم السابق إلى شيء مثل "التطبيق".
أضِف تبعية للتنفيذ على وحدة "التطبيق" في ملف
build.gradle
لوحدة الميزات، كما هو موضّح أدناه.رائع
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation project(":app") }
Kotlin
dependencies { ... // In the feature module, add an implementation dependency // on the base app module. implementation(project(":app")) }
أضِف الميزة إلى ملف
build.gradle
الخاص بوحدة التطبيق الجديدة.رائع
android { ... // In the base app module, specify each feature module. dynamicFeatures = [":installed_feature"] }
Kotlin
android { ... // In the base app module, specify each feature module. dynamicFeatures.addAll(listOf(":installed_feature")) }
في بيان وحدة الميزات، ضَع علامة على وحدة الميزة كوحدة قابلة للتثبيت من خلال إضافة علامات توزيع الحزمة المناسبة إلى البيان.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="false" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
تحويل وحدات الميزات الأخرى إلى وحدات ميزات تم تفعيل ميزة التطبيقات الفورية فيها
في حال تقسيم وظائف إضافية لتطبيقك إلى وحدات متعددة، عليك اتّباع الخطوات الواردة في هذا القسم لتحويل هذه الوحدات إلى وحدات ميزات يتم تفعيل ميزة التطبيقات الفورية فيها.
مع كل وحدة من وحدات الميزات المتبقية في مشروعك، اتبع الخطوات التالية لتحويلها إلى ميزات ذات ميزة فورية:
يمكنك تغيير نوع المكوِّن الإضافي في ملف
build.gradle
إلىcom.android.dynamic-feature
، كما هو موضَّح أدناه:رائع
// Replace 'com.android.feature' with 'com.android.dynamic-feature' plugins { id 'com.android.dynamic-feature' }
Kotlin
// Replace "com.android.feature" with "com.android.dynamic-feature" plugins { id("com.android.dynamic-feature") }
ضَع علامة على كل وحدة من وحدات الميزات للإشارة إلى أنّها مفعّلة بشكل فوري من خلال إضافة ما يلي إلى البيان.
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" dist:onDemand="false" dist:title="@string/title_dynamic_feature"> <dist:fusing dist:include="true" /> </dist:module> ... </manifest>
أضِف وحدة الميزات إلى ملف
build.gradle
الخاص بوحدة التطبيق الجديدة، حيث أضفتinstalled_feature
إلى قائمة وحدات الميزات.رائع
android { ... dynamicFeatures = [":installed_feature", ":feature_1", ":feature_2"] // or whichever name exists for the instant enabled feature module }
Kotlin
android { ... dynamicFeatures.addAll(listOf(":installed_feature", ":feature_1", ":feature_2")) // or whichever name exists for the instant enabled feature module }
إنشاء حِزمة تطبيقات جديدة تعمل مع ميزة التطبيقات الفورية واختبارها ونشرها
بعد إكمال الخطوات الواردة في هذه الصفحة، يمكن لمشروعك إنتاج أداة واحدة، وهي "حزمة تطبيق Android"، التي يمكنك استخدامها لنشر كلّ من الإصدار المثبَّت والفوري من تطبيقك على Google Play Console، وطرحه بشكل منفصل للمسارات الفورية والمثبَّتة. بالإضافة إلى ذلك، يمكنك استخدام حِزم التطبيقات للاستفادة من عرض حِزم APK محسّنة لإعدادات كل جهاز على حدة، وبذلك لا ينزِّل المستخدمون سوى الرموز والموارد التي يحتاجون إليها لتشغيل تطبيقك. ويعني ذلك أنّه لم يعد عليك إنشاء حِزم APK متعددة وتوقيعها وإدارتها لدعم أجهزة مختلفة، وسيصبح المستخدمون أصغر حجمًا وأكثر تطوّرًا في التنزيل.
لبدء إنشاء حِزمة تطبيق تم تفعيل ميزة التطبيقات الفورية فيها واختبارها، انتقِل إلى المقالة إنشاء حِزمة التطبيق.