يتيح لك العرض الشَرطي ضبط متطلبات معيّنة لإعدادات الجهاز لتنزيل وحدات الميزات تلقائيًا أثناء تثبيت التطبيق. على سبيل المثال، يمكنك ضبط وحدة ميزات تتضمّن وظائف الواقع المعزّز (AR) لتكون متاحة عند تثبيت التطبيق على الأجهزة التي تتيح استخدام تقنية الواقع المعزّز فقط.
تتيح آلية الإرسال هذه حاليًا التحكّم في تنزيل ملف برمجي عند تثبيت التطبيق استنادًا إلى إعدادات الجهاز التالية:
- ميزات أجهزة الجهاز وبرامجه، بما في ذلك إصدار OpenGL ES
- بلد المستخدم
- مستوى واجهة برمجة التطبيقات
إذا لم يستوفِ الجهاز جميع المتطلبات التي تحدّدها، لن يتم تنزيل الوحدة في وقت تثبيت التطبيق. ومع ذلك، قد يطلب تطبيقك في وقت لاحق تنزيل الوحدة عند الطلب باستخدام حزمة SDK لـ Play Core.
قبل البدء، تأكَّد من استخدام الإصدار 3.5 من "استوديو Android" أو إصدار أحدث. توضِّح لك القسم التالية كيفية إضافة ميزة العرض الشَرطي إلى وحدات الميزات.
إضافة وحدة جديدة تتضمّن خيارات تسليم مشروطة
إنّ أسهل طريقة لإنشاء وحدة ميزة جديدة مع عرض مشروط هي من خلال معالج وحدة جديدة، على النحو التالي:
- لفتح مربّع الحوار وحدة جديدة، اختَر ملف > جديد > وحدة جديدة من شريط القوائم.
- في مربّع الحوار "وحدة جديدة"، اختَر وحدة ميزة ديناميكية وانقر على التالي.
- اضبط الإعدادات في الوحدة كما تفعل عادةً وانقر على التالي.
في قسم خيارات تنزيل الوحدات، أكمِل ما يلي:
حدِّد عنوان الوحدة باستخدام ما يصل إلى 50 حرفًا. يستخدم النظام الأساسي هذا العنوان لتعريف الوحدة للمستخدمين عند، على سبيل المثال، تأكيد ما إذا كان المستخدم يريد تنزيل الوحدة. لهذا السبب، يجب أن تتضمّن الوحدة الأساسية لتطبيقك عنوان الوحدة بصفتها مورد سلسلة يمكنك ترجمته. عند إنشاء الوحدة باستخدام "استوديو Android"، يُضيف IDE مورد السلسلة إلى الوحدة الأساسية نيابةً عنك ويُدخل العنصر التالي في ملف بيان وحدة الميزات:
<dist:module ... dist:title="@string/feature_title"> </dist:module>
في القائمة المنسدلة ضمن التضمين أثناء التثبيت، اختَر عدم تضمين الوحدة إلا عند تثبيت التطبيق على الأجهزة التي تتضمّن ميزات محدّدة، ما يؤدي إلى إنشاء وحدة يتم تضمينها مع تطبيقك أثناء تثبيته على الأجهزة التي تتضمّن إعدادات معيّنة يمكنك تحديدها، مثل ميزات الجهاز أو البلد. يُدخل "استوديو Android" ما يلي فيملف ملف التسمية للوحدة لتوضيح اختيارك:
<dist:module ... > <dist:delivery> <dist:install-time> <dist:conditions> <!-- If you specify conditions, as described in the steps below, the IDE includes them here. --> </dist:conditions> </dist:install-time> </dist:delivery> </dist:module>
إذا أردت حصر التنزيل التلقائي للوحدة في بلدان معيّنة أو الحد الأدنى من مستوى واجهة برمجة التطبيقات، انقر على إنهاء لإكمال إنشاء الوحدة ثم اطّلِع على القسم حول كيفية تحديد الشروط استنادًا إلى البلد أو الحد الأدنى من مستوى واجهة برمجة التطبيقات. بخلاف ذلك، انقر على + ميزة الجهاز لإضافة ميزة يحتاجها الجهاز لتنزيل الوحدة في وقت التثبيت.
بجانب device-feature، اختَر أحد الخيارات التالية من القائمة المنسدلة وحدِّد قيمته:
- الاسم: يتيح لك تحديد ميزة في الجهاز تتطلّب استخدام جهاز كمبيوتر أو برنامج لتنزيل الوحدة عند تثبيتها. الميزات التي يتيح العرض المشروط استخدامها هي
نفسها المُدرَجة كثوابت
FEATURE_*
من قِبلPackageManager
. إذا حدّدت هذا الخيار، ابدأ بكتابة أي جزء من القيمة الثابتة للميزة، مثل "البلوتوث"، في الحقل بجانب القائمة المنسدلة، ثم اختَر أحد الاقتراحات التي تظهر. - إصدار OpenGL ES: يتيح لك تحديد إصدار OpenGL ES الذي يحتاجه الجهاز لتنزيل الوحدة في وقت التثبيت. إذا اختَرت هذا الخيار، ابدأ بكتابة الإصدار، مثل "0x00030001"، في الحقل بجانب القائمة المنسدلة، واختَر أحد الاقتراحات التي تظهر.
- الاسم: يتيح لك تحديد ميزة في الجهاز تتطلّب استخدام جهاز كمبيوتر أو برنامج لتنزيل الوحدة عند تثبيتها. الميزات التي يتيح العرض المشروط استخدامها هي
نفسها المُدرَجة كثوابت
إذا أردت إضافة شروط متعدّدة استنادًا إلى ميزات الجهاز المتاحة، انقر على + ميزة الجهاز لكلّ شرط من شروط ميزات الجهاز التي تريد تحديدها.
ضَع علامة في المربّع بجانب دمج إذا كنت تريد أن تكون هذه الوحدة متاحة للأجهزة التي تعمل بنظام التشغيل Android 4.4 (المستوى 20 لواجهة برمجة التطبيقات) والإصدارات الأقدم وأن تكون مضمّنة في حِزم APK متعددة. وهذا يعني أنّه يمكنك تفعيل السلوك عند الطلب لهذه الوحدة وإيقاف الدمج لحذفها من الأجهزة التي لا تتوافق مع تنزيل حِزم APK المجزّأة وتثبيتها. يُدخل Android Studio العناصر التالية في ملف بيان الوحدة لتعكس اختيارك:
<dist:module ...> <dist:fusing dist:include="true | false" /> </dist:module>
عند الانتهاء من ضبط خيارات تنزيل الوحدات، انقر على إنهاء.
يُرجى العِلم أنّ المكوّن الإضافي لـ Android Gradle لا يتيح تشغيل lint من وحدات الميزات الديناميكية. سيؤدي تشغيل أداة التدقيق من وحدة التطبيق المقابلة إلى تشغيل أداة التدقيق على وحدات الميزات الديناميكية وتضمين جميع المشاكل في تقرير التدقيق بالتطبيق.
إضافة خيارات العرض الشَرطي إلى وحدة ميزة حالية
يمكنك بسهولة إضافة خيارات العرض الشَرطي إلى ملف APK لوحدة ميزات حالية من خلال بيان الوحدة. ومع ذلك، عليك أولاً الاطّلاع على توافق خيارات التسليم الشَرطي مع خيارات التسليم الأخرى التي سبق أن فعّلتها.
للبدء، عليك أولاً نقل البيان إلى عنصر
<dist:delivery>
الجديد. يعرض مقتطف الرمز البرمجي أدناه مثالاً على بنية التنسيق
القديمة:
<!-- This is the old syntax. -->
<dist:module
dist:title="@string/feature_title" dist:onDemand="true">
<dist:fusing dist:include="true"/>
</dist:module>
تم تحديد خيارات التسليم أعلاه على النحو التالي.
<dist:module
dist:title="@string/feature_title">
<dist:delivery>
<dist:on-demand/>
</dist:delivery>
<dist:fusing dist:include="true"/>
</dist:module>
يمكنك بعد ذلك تضمين خيارات العرض الشَرطي استنادًا إلى ميزات الجهاز على النحو التالي:
<dist:module
dist:title="@string/feature_title">
<dist:delivery>
<dist:on-demand/>
<dist:install-time>
<dist:conditions>
<!-- Requires that the device support AR to download the module at
app install-time. -->
<dist:device-feature dist:name="android.hardware.camera.ar"/>
</dist:conditions>
</dist:install-time>
</dist:delivery>
<dist:fusing dist:include="true"/>
</dist:module>
تتناول الأقسام أدناه خيارات أخرى للعرض المشروط، مثل حسب البلد أو الحد الأدنى لمستوى واجهة برمجة التطبيقات.
التوافق مع خيارات تنزيل الوحدات الأخرى
بما أنّ وحدات الميزات تقدّم خيارات متعدّدة لضبط كيفية عرض كل ميزة على جهاز المستخدم، من المهمّ فهم كيفية تأثير الإعدادات الأخرى في خيارات التسليم المشروط. يلخّص الجدول التالي التوافق بين التسليم المشروط وخيارات تنزيل الوحدات الأخرى.
خيار تنزيل الوحدة | التوافق مع التسليم المشروط |
---|---|
دمج (<dist:fusing dist:include="true"/> ) |
إذا ضبطت إحدى الوحدات هذا الخيار على "صحيح"، لن يراعي Google Play خيارات التسليم الشَرطي التي تحدّدها عند نشر تطبيقك على الأجهزة التي تعمل بمستوى واجهة برمجة التطبيقات 19 أو بإصدار أقدم. وهذا يعني أنّ وحدات الميزات التي تتيح الدمج يتم تضمينها دائمًا في وقت التثبيت على الأجهزة التي تعمل بمستوى واجهة برمجة التطبيقات 19 أو أقل. |
تم تفعيل ميزة "التشغيل الفوري" (<dist:module dist:instant="true"/> ) |
لا تتوفّر خيارات التسليم الشَرطي لوحدات الميزات المفعَّلة لميزة التطبيقات الفورية. |
المحتوى عند الطلب (<dist:on-demand/> ) |
إذا حدّدت خيارات التسليم المشروط، تكون الوحدة متاحة أيضًا عند الطلب تلقائيًا. |
تحديد الشروط استنادًا إلى البلد
يتيح لك أيضًا الوضع المشروط تحديد البُلدان التي تريد استبعادها (أو تضمينها) من تنزيل وحدتك في وقت تثبيت التطبيق. قد يكون تحديد هذا الشرط مفيدًا إذا كانت وحدتك مثلاً تنفّذ طريقة دفع غير متاحة في مناطق معيّنة.
في هذا السياق، يتم تحديد بلد الجهاز عادةً من خلال عنوان إرسال الفواتير الخاص بالمستخدم والمُسجَّل في حسابه على Google Play.
لتحديد البلدان التي تتوفّر فيها وحدتك، أدرِج ما يلي في بيان ميزة الوحدة.
<dist:conditions>
<!-- Set to "true" to specify countries to exclude from downloading
this module at app install-time. By default, modules are available
for download to all user countries. -->
<dist:user-countries dist:exclude="true">
<!-- Specifies the two-letter CLDR country code for regions that should
not download the module at app install-time. -->
<dist:country dist:code="CN"/>
<dist:country dist:code="HK"/>
</dist:user-countries>
</dist:conditions>
تحديد شروط مستوى واجهة برمجة التطبيقات
يمكن أن يكون تحديد شرط استنادًا إلى مستوى واجهة برمجة التطبيقات للجهاز مفيدًا إذا كانت وحدة ميزة تعتمد على واجهات برمجة تطبيقات متوفّرة في إصدارات معيّنة فقط من نظام التشغيل Android.
لضبط شرط استنادًا إلى الحد الأدنى أو الحد الأقصى لمستوى واجهة برمجة التطبيقات للجهاز، أدرِج الخطوات التالية في بيان وحدة الميزات.
<dist:conditions> <!-- Specifies the minimum API level that the device must satisfy in order to download your module at app install-time. The API level you specify must be greater or equal to the module's own minSdkVersion. --> <dist:min-sdk dist:value="21"/> <!-- Specifies the maximum API level that the device cannot exceed in order to download your module at app install-time. The API level you specify must be less than or equal to the module's own maxSdkVersion. --> <dist:max-sdk dist:value="24"/> </dist:conditions>
تحديد شروط لسمات الأجهزة الأخرى (إصدار تجريبي)
لتحديد شروط لسمات الجهاز الأخرى، مثل اسم الطراز وذاكرة الوصول العشوائي (RAM) وميزات النظام والمنظومة على الرقاقة، يمكنك استخدام ملف إعدادات targeting device.
لإنشاء ملف إعداد لاستهداف الأجهزة، اطّلِع على مستندات استهداف الأجهزة.
بعد إنشاء ملف الإعدادات، يمكنك تحديد مجموعات الأجهزة ل وحدتك من خلال تضمين ما يلي في بيان وحدة الميزات.
<dist:conditions>
<dist:device-groups>
<dist:device-group dist:name="myCustomGroup1"/>
<dist:device-group dist:name="myCustomGroup2"/>
</dist:device-groups>
</dist:conditions>