نظرة عامة على عرض الميزات في Play

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

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

إعدادات إنشاء وحدة الميزات

عند إنشاء وحدة ميزات جديدة باستخدام "استوديو Android"، يستكشف بيئة التطوير المتكاملة (IDE) لتطبيق المكوّن الإضافي التالي لنظام Gradle على ملف build.gradle في الوحدة.

// The following applies the dynamic-feature plugin to your feature module.
// The plugin includes the Gradle tasks and properties required to configure and build
// an app bundle that includes your feature module.

plugins {
  id 'com.android.dynamic-feature'
}

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

ما لا يجب تضمينه في إعدادات إنشاء وحدة الميزات

ولأن كل وحدة من وحدات الميزات تعتمد على الوحدة الأساسية، فإنها تستخدم أيضًا تكتسب إعدادات معيّنة. لذلك، يجب حذف ما يلي في ملف build.gradle الخاص بوحدة الميزات:

  • عمليات إعداد التوقيع: يتم توقيع حِزم التطبيقات باستخدام التوقيع. التي تحددها في الوحدة الأساسية.
  • السمة minifyEnabled: يمكنك تفعيل تقليص الرموز لمشروع تطبيقك بالكامل من خلال إصدار الوحدة الأساسية فقط التكوين. لذلك، يجب أن تحذف هذه الخاصية من وحدات الميزات. ومع ذلك، يمكنك تحديد قواعد ProGuard إضافية لكل وحدة من وحدات الميزات.
  • versionCode وversionName: عند إنشاء حِزمة تطبيقك، يستخدم Gradle معلومات إصدار التطبيق التي توفرها الوحدة الأساسية. يجب حذف هذه الخصائص من وحدة الميزات ملف build.gradle.

تأسيس علاقة بالوحدة الأساسية

عندما ينشئ "استوديو Android" وحدة الميزات الخاصة بك، تصبح مرئية. إلى الوحدة الأساسية من خلال إضافة خاصية android.dynamicFeatures إلى build.gradle للوحدة الأساسية، كما هو موضح أدناه:

// In the base module’s build.gradle file.
android {
    ...
    // Specifies feature modules that have a dependency on
    // this base module.
    dynamicFeatures = [":dynamic_feature", ":dynamic_feature2"]
}

بالإضافة إلى ذلك، يشتمل "استوديو Android" على الوحدة الأساسية كملحق لوحدة الميزات، كما هو موضّح أدناه:

// In the feature module’s build.gradle file:
...
dependencies {
    ...
    // Declares a dependency on the base module, ':app'.
    implementation project(':app')
}

تحديد قواعد ProGuard إضافية

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

android.buildTypes {
     release {
         // You must use the following property to specify additional ProGuard
         // rules for feature modules.
         proguardFiles 'proguard-rules-dynamic-features.pro'
     }
}

تجدر الإشارة إلى أنّ قواعد ProGuard هذه مدمَجة مع قواعد الوحدات الأخرى (بما في ذلك الوحدة الأساسية) في وقت الإنشاء. إذًا، في حين أن كل خاصية مجموعة جديدة من القواعد، تسري هذه القواعد على جميع الوحدات في مشروع التطبيق.

نشر تطبيقك

أثناء تطوير التطبيق بدعم من وحدات الميزات، يمكنك نشر تطبيقك على جهاز متصل مثلما تفعل عادةً من خلال اختيار تشغيل > التشغيل من شريط القوائم (أو بالنقر على تشغيل في شريط الأدوات).

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

  1. حدد تشغيل > عدِّل الإعدادات من شريط القوائم.
  2. من اللوحة اليمنى في مربّع الحوار تشغيل/تصحيح الإعدادات، اختَر إعداد تطبيق Android المطلوب.
  3. ضمن الميزات الديناميكية المراد نشرها في علامة التبويب الإعدادات العامة، تحقَّق من بجانب كل وحدة ميزة تريد تضمينها عند نشر التطبيق.
  4. انقر على موافق.

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

استخدام وحدات الميزات للتسليم المخصّص

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

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

ضع في اعتبارك تطبيقًا يتيح للمستخدمين شراء وبيع السلع عبر الإنترنت السوق. يمكنك تقسيم كل من الوظائف التالية إلى وحدات بشكل معقول من التطبيق في وحدات ميزات منفصلة:

  • تسجيل الدخول إلى الحساب وإنشائه
  • تصفّح السوق
  • وضع عنصر للبيع
  • معالجة الدفعات

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

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

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

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

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

تصنيف تطبيقك إلى وحدات باستخدام الميزة الوحدات التي لا تهيئ أي خيارات تسليم متقدمة.

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

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

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

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

من خلال ميزة "التسليم الفوري"، يمكنك الاستفادة من "تطبيقات Google Play الفورية" للسماح للمستخدمين تجربة ميزات معيّنة في تطبيقك فورًا بدون التثبيت.

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

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

إنشاء معرف موارد منتظم (URI) لمورد

إذا أردت الوصول إلى مورد مخزن في وحدة ميزات باستخدام عنوان URI، إليك كيفية إنشاء معرّف موارد منتظم (URI) لمورد وحدة الميزات باستخدام Uri.Builder():

Kotlin

val uri = Uri.Builder()
                .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
                .authority(context.getPackageName()) // Look up the resources in the application with its splits loaded
                .appendPath(resources.getResourceTypeName(resId))
                .appendPath(String.format("%s:%s",
                  resources.getResourcePackageName(resId), // Look up the dynamic resource in the split namespace.
                  resources.getResourceEntryName(resId)
                  ))
                .build()

Java

String uri = Uri.Builder()
                .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
                .authority(context.getPackageName()) // Look up the resources in the application with its splits loaded
                .appendPath(resources.getResourceTypeName(resId))
                .appendPath(String.format("%s:%s",
                  resources.getResourcePackageName(resId), // Look up the dynamic resource in the split namespace.
                  resources.getResourceEntryName(resId)
                  ))
                .build().toString();

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

كمثال على كيفية إنشاء عنوان URI، لنفترض أن لديك تطبيقًا وحدات الميزات التي تحمل الأسماء التالية:

  • اسم حزمة التطبيق: com.example.my_app_package
  • اسم حزمة موارد الميزة: com.example.my_app_package.my_dynamic_feature

إذا كانت القيمة resId في مقتطف الرمز أعلاه تشير إلى مورد ملف أولي يُسمى "my_video" في وحدة الميزات، سيعتمد الكود Uri.Builder() أعلاه أخرج ما يلي:

android.resource://com.example.my_app_package/raw/com.example.my_app_package.my_dynamic_feature:my_video

ويمكن للتطبيق بعد ذلك استخدام معرّف الموارد المنتظم (URI) هذا للوصول إلى مورد وحدة الميزات.

للتحقّق من صحة المسارات في معرّف الموارد المنتظم (URI)، يمكنك استخدام أداة تحليل APK. لفحص حِزمة APK لوحدة الميزات وتحديد اسم الحزمة:

لقطة شاشة لأداة "أداة تحليل APK" وهي تفحص محتوى ملف موارد مجمّع

الشكل 2. يمكنك استخدام "أداة تحليل حِزم APK" لفحص اسم الحزمة في ملف موارد مجمّع.

اعتبارات بشأن وحدات الميزات

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

  • يمكن أن يتم تثبيت 50 وحدة ميزة أو أكثر على جهاز واحد، عبر الشرطي أو التسليم عند الطلب، قد يؤدي إلى مشكلات في الأداء. وحدات وقت التثبيت التي لم يتم ضبطها على أنّها قابلة للإزالة، بل يتم تضمينها تلقائيًا في القاعدة وتُعدّ فقط كوحدة ميزات واحدة على كل جهاز.
  • الحدّ من عدد الوحدات التي تضبطها كوحدات قابلة للإزالة في وقت التثبيت التسليم إلى 10 أو أقل. بخلاف ذلك، سيتم قد يزداد وقت تنزيل تطبيقك وتثبيته.
  • الأجهزة التي تعمل بالإصدار 5.0 (المستوى 21 من واجهة برمجة التطبيقات) والإصدارات الأحدث من نظام التشغيل Android فقط تنزيل الميزات وتثبيتها عند الطلب. لإتاحة الميزة على الإصدارات السابقة من Android، مكِّن الدمج عند إنشاء وحدة ميزة.
  • فعِّل SegmentCompat (تقسيم)، حتى يتمكّن التطبيق من الوصول إلى وحدات الميزات التي تم تنزيلها والتي يتم عرضها على الطلب.
  • يجب ألا تحدد وحدات الميزات الأنشطة في ملف البيان الخاص بها مع تم ضبط android:exported على true هذا لأنه ليس هناك ما يضمن أن الجهاز نزّل وحدة الميزة عند محاولة تطبيق آخر تشغيل الأخرى. بالإضافة إلى ذلك، يجب أن يؤكّد تطبيقك أنّ الميزة تم تنزيله قبل محاولة الوصول إلى التعليمات البرمجية والموارد الخاصة به. لمزيد من المعلومات، يُرجى قراءة إدارة الوحدات المثبَّتة:
  • وبما أنّ ميزة "عرض الميزات في Play" تتطلّب منك نشر تطبيقك باستخدام حِزمة تطبيق، تأكّد من أنّك على عِلم بحِزمة التطبيق المشاكل المعروفة.

مرجع بيان وحدة الميزات

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

السمة الوصف
<manifest
...
هذا هو النموذج العادي حظر "<manifest>"
xmlns:dist="http://schemas.android.com/apk/distribution" تحدّد مساحة اسم dist: جديدة بتنسيق XML بمزيد من التفصيل أدناه.
split="split_name" عندما ينشئ "استوديو Android" حِزمة تطبيقك، سيشمل ذلك ما يلي: من أجلك. لذلك، يجب عدم تضمين أو تعديل هذه السمة بنفسك.

تحدِّد هذه السياسة اسم الوحدة التي يحدّدها تطبيقك. عند طلب وحدة عند الطلب من خلال مكتبة عرض الميزات في Play.

كيفية تحديد Gradle لقيمة هذه السمة:

بشكل افتراضي، عندما تنشئ وحدة ميزات باستخدام Android Studio، ويستخدم IDE ما تحدده اسم الوحدة لتحديد الوحدة باعتبارها مشروعًا فرعيًا من Gradle في ملف إعدادات Gradle.

عند إنشاء حِزمة تطبيقك، تستخدم Gradle العنصر الأخير من مسار المشروع الفرعي لإدخال سمة البيان هذه في عنوان البيان. على سبيل المثال، إذا أنشأت وحدة ميزات جديدة في دليل MyAppProject/features/ وتحديد "dynamic_feature1" كاسم الوحدة، فإن IDE تضيف ':features:dynamic_feature1' كمشروع فرعي في ملف settings.gradle. عند إنشاء حِزمة تطبيقك ثم تقوم أداة Gradle بإدخال <manifest split="dynamic_feature1"> في بيان الوحدة.

android:isFeatureSplit="true | false"> عندما ينشئ "استوديو Android" حِزمة تطبيقك، فإنه يتضمن هذه السمة لك. لذلك، يجب عدم تضمين أو تعديلها يدويًا

لتحديد أن هذه الوحدة هي وحدة من الميزات. ملفات البيانات في الوحدة الأساسية وحِزم APK للإعداد احذف هذه السمة أو اضبطها على false.

<dist:module يحدد عنصر XML الجديد السمات التي تحدد كيفية التي يتم حزمها وتوزيعها كملفات APK.
dist:instant="true | false" تحدد ما إذا كان يجب أن تكون الوحدة متاحة من خلال تطبيقات Google Play الفورية باسم تجربة فورية.

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

لا يمكنك ضبط عنصر XML هذا على true مع ضبط أيضًا <dist:on-demand/> ومع ذلك، لا يزال بإمكانك طلب عمليات التنزيل عند الطلب لوحدات الميزات التي تم تفعيل ميزة التطبيقات الفورية فيها كتجارب فورية باستخدام مكتبة عرض الميزات في Play. عندما يُنزِّل أحد المستخدمين تطبيقك ويثبِّته، يتولّى الجهاز على تنزيل وتثبيت وحدات الميزات التي تم تفعيل ميزة التطبيقات الفورية فيها في تطبيقك بالإضافة إلى حزمة APK الأساسية بشكل تلقائي

dist:title="@string/feature_name" تحدّد عنوانًا موجهًا للمستخدمين للوحدة. على سبيل المثال: قد يعرض الجهاز هذا العنوان عندما يطلب التنزيل. التأكيد.

يجب تضمين مصدر السلسلة لهذا العنوان. في module_root/src/source_set/res/values/strings.xml للوحدة الأساسية الملف.

<dist:fusing dist:include="true | false" />
</dist:module>
لتحديد ما إذا كان سيتم تضمين الوحدة في حِزم APK المتعدّدة التي الأجهزة المستهدَفة التي تعمل بالإصدار 4.4 من نظام التشغيل Android (المستوى 20 من واجهة برمجة التطبيقات) والإصدارات الأقدم.

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

<dist:delivery> تتضمن هذه السياسة خيارات تخصِّص عرض الوحدات، كما هو موضَّح أدناه. تجدر الإشارة إلى أن كل وحدة من وحدات الميزات يجب أن تتضمن نوعًا واحدًا فقط من خيارات التسليم المخصصة هذه.
<dist:install-time> تحدِّد هذه السياسة أنّ الوحدة يجب أن تكون متاحة أثناء التثبيت. هذه هي السلوك التلقائي لوحدات الميزات التي لا تحدّد لغة أخرى نوع خيار التسليم المخصص.

لمعرفة المزيد من المعلومات عن عمليات التنزيل أثناء التثبيت، يُرجى الاطّلاع على ضبط التسليم في وقت التثبيت

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

<dist:removable dist:value="true | false" />

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

عند ضبط removable على true: وقت التثبيت لن يتم دمج الوحدات في الوحدة الأساسية. ضبط على true إذا كنت تريد إلغاء تثبيت الوحدات في المستقبل. ومع ذلك، قد يؤدي ضبط عدد كبير جدًا من الوحدات بحيث لا يمكن إزالتها إلى زيادة وقت تثبيت تطبيقك.

وتكون القيمة التلقائية هي false. من الضروري فقط تعيين هذا في البيان إذا كنت تريد تعطيل الاندماج الجديدة.

ملاحظة: لا تتوفّر هذه الميزة إلا عند استخدام نظام Gradle المتوافق مع Android المكون الإضافي 4.2 أو عند استخدام packagetool v1.0 من سطر الأوامر.

</dist:install-time>  
<dist:on-demand/> تحدد أنّ الوحدة يجب أن تكون متاحة عند الطلب التنزيل. بمعنى أن الوحدة لا تكون متاحة في وقت التثبيت، لكن قد يطلب التطبيق تنزيله لاحقًا.

لمعرفة المزيد من المعلومات عن عمليات التنزيل عند الطلب، يُرجى قراءة ضبط إعدادات العرض عند الطلب

</dist:delivery>
<application
android:hasCode="true | false">
...
</application>
إذا لم تنشئ وحدة الميزات أي ملفات DEX، أي أنها تحتوي على أي تعليمة برمجية يتم تجميعها لاحقًا في تنسيق ملف DEX - فيجب القيام تتم متابعتها (وإلا قد تظهر أخطاء في وقت التشغيل):
  1. ضبط android:hasCode على "false" في في بيان وحدة الميزات.
  2. أضِف ما يلي إلى بيان الوحدة الأساسية:
    <application
      android:hasCode="true"
      tools:replace="android:hasCode">
      ...
    </application>
    

مصادر إضافية

لمزيد من المعلومات حول استخدام وحدات الميزات، يمكنك الاطّلاع على المراجع التالية.

مشاركات المدونة

الفيديوهات

بنود الخدمة وأمان البيانات

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

أمان البيانات

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

واجهة برمجة تطبيقات اللغات الإضافية

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

عرض الميزات في Play

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

على الرغم من أنّنا نهدف إلى تحقيق أكبر قدر ممكن من الشفافية، فإنّك وحدك المسؤول عن لتحديد كيفية الردّ على نموذج قسم "أمان البيانات" في Google Play بشأن ممارسات جمع بيانات مستخدمي تطبيقك ومشاركتها والحفاظ على أمانها