نقل بيانات تطبيقك الفوري للتوافق مع تنسيق مجموعة حزمات تطبيق Android

في حال استمرارك في استخدام المكوّن الإضافي "ميزات 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

ملاحظة: تتضمن هذه الوحدة جميع ملفات البيان معلومات التوقيع المطلوبة لإنشاء تطبيقك وتغليفه على أنّه نظام Android حِزمة تطبيق أو حِزمة APK

ميزات إضافية مستندة إلى وحدات يمكن للمستخدمين تنزيلها عند الطلب 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 طريقة جديدة لإنشاء التطبيقات ونشرها تطبيقك الذي يعمل إلى حد كبير على تبسيط توزيع حِزم APK المحسَّنة المستخدمين.

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

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

عند نقل تطبيقك للتوافق مع مجموعات حزمات تطبيق Android، ستلاحظ أنّ وحدة تطبيقك وتستعيد دور الوحدة الأساسية، وتنظم المزيد من الأجهزة المثبَّتة أو وتجارب فورية كوحدات ميزات. أي أن مشروعك الآن أكثر يشبه إلى حدّ كبير مشروع تطبيق عادي، ويتضمّن وحدة أساسية تمّ تفعيل ميزة التطبيقات الفورية فيها. والقدرة على تضمين تجارب فورية إضافية مكونة من وحدات.

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

تحويل وحدة الميزات الأساسية إلى وحدة تطبيق

عليك أولاً تعديل ملف build.gradle لوحدة الميزات الأساسية قبل أن وتحويله إلى وحدة التطبيق الرئيسية على النحو التالي:

  1. احذف السطر baseFeature true.
  2. أزِل أي ملحقات تستخدم الاعتمادية feature أو application. الإعدادات.

    Groovy

    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"))
    }
    
  3. انقل applicationId، بالإضافة إلى أي إعدادات أخرى خاصة بالنص البرمجي للإنشاء. أن يكون في وحدة التطبيق الأساسية، بدءًا من الوحدة الحالية com.android.application إلى وحدة com.android.feature. بعض الإشعارات الأمثلة الموضحة أدناه. بالنسبة لهذه الخطوة، اعتمادًا على إعداد build.gradle، قد يكون من الأسهل نسخ ولصق android. من build.gradle من الوحدة السابقة للتطبيق إلى التطبيق الجديد على الملف build.gradle الخاص بالوحدة. ومع ذلك، يجب توخي الحذر عند إجراء إذًا.

    Groovy

    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"
                )
            }
        }
    }
    
  4. يمكنك وضع علامة على وحدة الميزات تشير إلى أنّه تم تفعيل ميزة التطبيقات الفورية فيها من خلال إضافة الحزمة المناسبة. علامات التوزيع في البيان، كما هو موضّح أدناه.

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  5. تحويل وحدة الميزات إلى وحدة التطبيق الأساسية من خلال تغيير المكوّن الإضافي الخاص بها الكتابة إلى com.android.application:

    Groovy

    // 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 الأخرى، على النحو التالي:

  1. تغيير نوع المكوِّن الإضافي من com.android.application إلى com.android.dynamic-feature

    Groovy

    // 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")
    }
    
  2. كما هو موضح في القسم السابق، تأكد من نقل الإصدار يتطلبه المكوّن الإضافي com.android.application وحدة التطبيق الأساسية، مثل القواعد applicationId أو proguardFiles.

  3. إعادة تسمية الوحدة إلى شيء مثل "installed_feature" على النحو التالي:

    1. افتح جزء المشروع من خلال اختيار عرض > نوافذ الأدوات > المشروع من شريط القوائم.
    2. انقر بزر الماوس الأيمن على وحدة الميزات واختر إعادة ضبط الإعدادات > إعادة التسمية.
    3. في مربع الحوار الذي يظهر، اختَر إعادة تسمية الوحدة وانقر على حسنًا.
    4. أدخل الاسم الجديد للوحدة النمطية وانقر على موافق.
  4. على غرار الخطوة 3، عليك إعادة تسمية وحدة التطبيق الجديدة التي أنشأتها في الخطوة السابقة إلى شيء مثل "التطبيق".

  5. إضافة اعتمادية تنفيذ إلى وحدة "التطبيق" في الميزة الخاص بالوحدة build.gradle، كما هو موضح أدناه.

    Groovy

    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"))
    }
    
  6. أضِف الميزة إلى ملف build.gradle الخاص بوحدة التطبيق الجديدة.

    Groovy

    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"))
    }
    
  7. في بيان وحدة الميزات، ضع علامة على الوحدة على أنها وحدة قابلة للتثبيت عن طريق إضافة علامات توزيع الحزمة المناسبة إلى البيان.

    <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>
    

تحويل وحدات الميزات الأخرى إلى وحدات ميزات تم تفعيل ميزة التطبيقات الفورية فيها

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

لكل وحدة ميزة متبقية في مشروعك، يمكنك المتابعة على النحو التالي لتحويلها إلى الميزات ذات التطبيقات الفورية:

  1. غيِّر نوع المكوِّن الإضافي في ملف build.gradle إلى com.android.dynamic-feature، كما هو موضّح أدناه:

    Groovy

    // 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")
    }
    
  2. يمكنك وضع علامة على كل وحدة من وحدات الميزات تشير إلى أنه تم تفعيل ميزة التطبيقات الفورية فيها من خلال إضافة ما يلي إلى البيان.

    <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>
    
  3. إضافة وحدة الميزات إلى ملف build.gradle الخاص بوحدة التطبيق الجديدة في المكان الذي أضفت فيه installed_feature إلى قائمة وحدات الميزات.

    Groovy

    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 متعددة لتتوافق مع أجهزة مختلفة، ويصبح المستخدمون أصغر والمزيد من عمليات التنزيل المحسَّنة

لبدء إنشاء حِزمة تطبيق تم تفعيل ميزة التطبيقات الفورية فيها واختبارها، يُرجى الانتقال إلى إنشاء حِزمة التطبيق: