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

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

إذا كان لديك مشروع تطبيق فوري حالي يستخدم المكوّن الإضافي المتوقف للميزة (com.android.feature)، تعرَّف على كيفية نقل تطبيقك الفوري لإتاحة تنسيق Android App Bundle.

إعداد بيئة التطوير

لتوفير تجربة فورية داخل حزمة تطبيق، يجب الوصول إلى حزمة تطوير البرامج (SDK) للتطوير الفوري على Google Play. يمكنك تثبيت SDK باستخدام إحدى الطرق التالية:

  • تثبيت الإصدار 3.6 من "استوديو Android" أو إصدار أحدث بعد فتح "استوديو Android"، نزِّل حزمة تطوير البرامج (SDK) للتطوير الفوري من Google Play من علامة التبويب أدوات SDK في مدير SDK.
  • التثبيت من سطر الأوامر:

    cd path/to/android/sdk/tools/bin && \
      ./sdkmanager 'extras;google;instantapps'
    

بالإضافة إلى ذلك، إذا أردت اختبار تجربتك الفورية محليًا، يمكنك الوصول إلى جهاز مادي أو افتراضي.

التعرّف على شروط التنفيذ المطلوبة

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

الأذونات والعمليات المتوافقة

يمكن لحِزم التطبيقات التي تم تفعيل ميزة التطبيقات الفورية فيها استخدام الأذونات فقط من القائمة التالية:

معالجة الأذونات الشائعة غير المتوافقة

في ما يلي قائمة بالأذونات الشائعة غير المتوافقة التي يجب إزالتها من تطبيقك ومسار النقل الموصى به لكل إذن:

  • ACCESS_WIFI_STATE: استخدِم السمة ACCESS_NETWORK_STATE التي من المفترض أن تقدّم معلومات مشابهة للسمة ACCESS_WIFI_STATE.
  • BILLING: هذا إذن تم إيقافه نهائيًا. استخدام مكتبة الفوترة في Google Play، التي لم تعُد تتطلّب إذن com.android.vending.BILLING.
  • READ/WRITE_EXTERNAL_STORAGE: لا يمكن للتطبيقات الفورية الوصول إلى وحدة التخزين الخارجية، لذا استخدم وحدة تخزين داخلية بدلاً من ذلك.
  • com.google.android.c2dm.permission.RECEIVE وpermission.C2D_MESSAGE: تم إيقاف C2DM نهائيًا. نقل البيانات إلى "المراسلة عبر السحابة الإلكترونية من Firebase" (FCM) لا تحتاج خدمة "المراسلة عبر السحابة الإلكترونية من Firebase" إلى أي أذونات إضافية للعمل.

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

الوصول إلى التطبيقات المثبّتة

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

  • تم ضبط عنصر android:visibleToInstantApps الخاص به على true لنشاط واحد أو أكثر ضمن تطبيق مثبّت. هذا العنصر متوفّر للتطبيقات التي تعمل بالإصدار 8.0 من Android (المستوى 26 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث.
  • يحتوي تطبيق مثبَّت على فلتر أهداف يتضمّن CATEGORY_BROWSABLE.
  • ترسل التجربة الفورية هدفًا باستخدام الإجراء ACTION_SEND أو ACTION_SENDTO أو ACTION_SEND_MULTIPLE.

اضبط مشروعك للحصول على تجارب فورية

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

تعريف تبعيات المشروع

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

رائع

implementation "com.google.android.gms:play-services-instantapps:17.0.0"

Kotlin

implementation("com.google.android.gms:play-services-instantapps:17.0.0")

تحديد رموز الإصدار الصحيحة

يجب أن يكون رمز الإصدار لتجربة التطبيق الفورية أقل من رمز إصدار التطبيق القابل للتثبيت. ومن المتوقع أن ينتقل المستخدمون من تجربة "تطبيقات Google Play الفورية" إلى تنزيل التطبيق وتثبيته على أجهزتهم. يعتبر إطار عمل Android هذا الانتقال مجرد تحديث للتطبيق.

للتأكد من اتباع مخطط تحديد الإصدارات الذي يتوقعه المستخدمون، اتّبِع إحدى الإستراتيجيات التالية:

  • أعِد تشغيل رموز الإصدارات لتجربة "تطبيقات Google Play الفورية" من خلال 1.
  • عليك زيادة رمز إصدار APK القابل للتثبيت بمقدار عدد كبير، مثل 1000، لضمان توفّر مساحة كافية لزيادة رقم إصدار التطبيق الفوري.

يمكن تطوير تطبيقك الفوري وتطبيقك القابل للتثبيت في مشروعَين منفصلَين على استوديو Android. مع ذلك، عليك إجراء ما يلي لنشر تطبيقك على Google Play:

  1. استخدِم اسم الحزمة نفسه في مشروعَي "استوديو Android".
  2. في Google Play Console، حمِّل الصيغتين إلى التطبيق نفسه.

للاطّلاع على مزيد من التفاصيل حول تحديد إصدار تطبيقك، يمكنك الرجوع إلى إصدار تطبيقك.

تحديث إصدار وضع الحماية المستهدف

يجب تحديث ملف AndroidManifest.xml في تطبيقك الفوري لاستهداف بيئة وضع الحماية المتوافقة مع "تطبيقات Google Play الفورية". يمكنك إكمال هذا التحديث من خلال إضافة السمة android:targetSandboxVersion إلى عنصر <manifest> في تطبيقك، كما هو موضّح في مقتطف الرمز التالي:

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

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

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

يمكن الإشارة إلى أنّ حِزمة تطبيقك تتيح التجارب الفورية باستخدام إحدى الطرق التالية:

  • إذا كانت لديك حِزمة تطبيق حالية لا تحتوي سوى على وحدة أساسية، يمكنك تفعيل حِزمة التطبيق فورًا على النحو التالي:

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

    يضيف "استوديو Android" البيان التالي إلى بيان الوحدة:

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  • إذا كانت لديك حزمة تطبيق حالية تحتوي على وحدات متعددة، يمكنك إنشاء وحدة ميزات تمّ تفعيل ميزة التطبيقات الفورية فيها. تؤدي هذه العملية أيضًا إلى تفعيل الوحدة الأساسية في تطبيقك على الفور، ما يتيح لك خيار إتاحة نقاط دخول فورية متعددة داخل تطبيقك.

إضافة إمكانية تسجيل الدخول

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

دعم بيئة التنفيذ

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

  • لا تشارك قيمة myUid()، وهي قيمة UID التي يعيِّنها تطبيقك.
  • إذا كان تطبيقك يستهدف الإصدار Android 8.1 (مستوى واجهة برمجة التطبيقات 27) أو إصدارًا أقدم، أنشئ ملف Network Security Config واضبط cleartextTrafficPermitted على false. لا تتوافق التجارب الفورية مع زيارات HTTP. بالنسبة إلى التطبيقات التي تستهدف الإصدار 9 من نظام التشغيل Android أو الإصدارات الأحدث، يتم إيقاف عدد زيارات نصوص الواضحة بشكل تلقائي.
  • تبقى التجربة الفورية بالتنزيل على جهاز المستخدم إلى أن يتم محو ذاكرة التخزين المؤقت للتجربة الفورية، ويحدث ذلك في إحدى الحالات التالية:

    • يتم جمع بيانات عن ذاكرة التخزين المؤقت للتجربة الفورية بسبب انخفاض مساحة الذاكرة المتاحة في الجهاز.
    • يعيد المستخدم تشغيل جهازه.

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

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

إضافة منطق لسير عمل التجربة الفورية

بعد إعداد حِزمة التطبيق بحيث تتوافق مع التجارب الفورية، أضِف المنطق الذي يظهر في الأقسام التالية.

التحقق مما إذا كان التطبيق يشغّل التجربة الفورية

إذا كان جزء من منطق تطبيقك يعتمد على ما إذا كان المستخدم مشاركًا في تجربتك الفورية، اطلب الطريقة isInstantApp(). تعرِض هذه الطريقة القيمة true إذا كانت العملية قيد التشغيل حاليًا تجربة فورية.

عرض طلب التثبيت

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

Kotlin

class MyInstantExperienceActivity : AppCompatActivity {
    // ...
    private fun showInstallPrompt() {
        val postInstall = Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name)

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(this@MyInstantExperienceActivity,
                postInstall, request-code, /* referrer= */ null)
    }
}

Java

public class MyInstantExperienceActivity extends AppCompatActivity {
    // ...
    private void showInstallPrompt() {
        Intent postInstall = new Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_DEFAULT)
                .setPackage(your-installed-experience-package-name);

        // The request code is passed to startActivityForResult().
        InstantApps.showInstallPrompt(MyInstantExperienceActivity.this,
                postInstall, request-code, /* referrer= */ null);
    }
}

نقل البيانات إلى تجربة مثبَّتة

إذا استمتع المستخدم بتجربتك الفورية، فقد يقرِّر تثبيت تطبيقك. ولتوفير تجربة جيدة للمستخدم، من المهم أن يتم نقل بيانات المستخدم من التجربة الفورية إلى الإصدار الكامل من تطبيقك.

إذا كان المستخدم يستخدم جهازًا يعمل بالإصدار 8.0 من نظام التشغيل Android (المستوى 26 لواجهة برمجة التطبيقات) أو إصدار أحدث، وإذا حدَّد تطبيقك targetSandboxVersion من 2، يتم نقل بيانات المستخدم تلقائيًا إلى الإصدار الكامل من تطبيقك، وإلا عليك نقل البيانات يدويًا. ولإجراء ذلك، استخدِم إحدى واجهات برمجة التطبيقات التالية:

  • بالنسبة إلى المستخدمين الذين يستخدمون أجهزة تعمل بنظام التشغيل Android 8.0 (المستوى 26 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن استخدام Cookie API - نموذج التطبيق.
  • إذا كان بإمكان المستخدمين التفاعل مع تجربتك على الأجهزة التي تعمل بالإصدار 7.1 من نظام التشغيل Android (المستوى 25 من واجهة برمجة التطبيقات) والإصدارات الأقدم، أضِف دعمًا لواجهة برمجة التطبيقات Storage - نموذج تطبيق.

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

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

استوديو Android

باستخدام "استوديو Android"، يمكنك إنشاء حِزمة التطبيق عن طريق اختيار إنشاء > إنشاء حِزم / حِزم APK > إنشاء حِزم. ولمزيد من المعلومات حول إنشاء مشروعك، راجِع القسم إنشاء مشروعك.

واجهة سطر الأوامر

يمكنك أيضًا إنشاء حزمة التطبيق من سطر الأوامر باستخدام Gradle.

التوافق مع البُنى 64 بت

يجب أن تتوافق التطبيقات المنشورة على Google Play مع بنية 64 بت. تؤدي إضافة إصدار 64 بت من تطبيقك إلى تحسين الأداء وإعدادك للأجهزة التي تعمل بنظام 64 بت فقط. مزيد من المعلومات حول دعم 64 بت

اختبار التجربة الفورية

قبل نشر حِزمة تطبيقك التي تم تفعيل ميزة التطبيقات الفورية فيها، يمكنك اختبار التجربة الفورية من أحد المواقع التالية للتحقّق من الوظائف:

استوديو Android

لاختبار التجربة الفورية لتطبيقك على جهاز محلي باستخدام Android Studio، يُرجى إكمال الخطوات التالية:

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

واجهة سطر الأوامر

لاختبار التجربة الفورية لتطبيقك على جهاز محلي باستخدام سطر الأوامر، أكمل الخطوات التالية:

  1. إذا كان لديك إصدار مثبَّت من تطبيقك على جهاز الاختبار، عليك إلغاء تثبيته.
  2. يمكنك تحميل تطبيقك الفوري من مصدر غير معروف وتشغيله على جهاز الاختبار من خلال إدخال الأمر التالي:
ia run output-from-build-command

مسار الاختبار الداخلي

لاختبار التجربة الفورية لتطبيقك من "متجر Play" أو بانر على موقعك الإلكتروني، انشر التطبيق في مسار الاختبار الداخلي على Play Console.

لنشر تطبيقك في مسار الاختبار الداخلي، يُرجى إكمال الخطوات التالية:

  1. حمِّل حِزمة تطبيقك من خلال اتّباع الخطوات الواردة في دليل تحميل حِزمة تطبيقك إلى Play Console.
  2. تحضير الحزمة التي تم تحميلها للإصدار في قناة الاختبار الداخلي لمزيد من المعلومات، يُرجى الاطّلاع على مقالة الدعم حول كيفية إعداد الإصدارات وطرحها.
  3. سجِّل الدخول إلى حساب مختبِر داخلي على أحد الأجهزة، ثم شغِّل تجربتك الفورية من إحدى مساحات العرض التالية:

    • زر التجربة الآن من بطاقة بيانات تطبيقك على "متجر Play"
    • رابط من إعلان بانر على الموقع الإلكتروني لتطبيقك.

نشر حِزمة التطبيق في قناة الإصدار العلني

لنشر حِزمة تطبيقك التي تم تفعيل ميزة التطبيقات الفورية فيها، أكمِل الخطوات التالية:

  1. يجب توقيع حِزمة التطبيق باستخدام مفتاح إصدار وتحميل حِزمة التطبيق إلى Play Console إذا لم يسبق لك توقيعها.
  2. في Play Console، افتح إدارة الإصدارات > تطبيقات Android الفورية، ثم انتقِل إلى قناة إنتاج التطبيقات الفورية.
  3. انقر على التحديث من المكتبة، ثم اختَر حِزمة التطبيق التي تم تفعيل ميزة التطبيقات الفورية فيها والتي حمّلتها.

اختيار مكان نشر تجربتك الفورية

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

مراجع إضافية

للتعرُّف على المزيد من المعلومات حول إنشاء تجارب فورية و"مجموعة حزمات تطبيق Android"، يمكنك الاطّلاع على المراجع التالية:

فيديو: تجميع تطبيق في تطبيق فوري
يمكنك التعرّف على كيفية إضافة تجربة فورية إلى "مجموعة حزمات تطبيق Android" في هذه الجلسة من مؤتمر Android Dev Summit لعام 2018.
فيديو: نشر تطبيقات أصغر حجمًا باستخدام "مجموعة حزمات تطبيق Android"
تعرَّف على الطريقة التي تساعدك بها حِزم التطبيقات في تطوير تطبيقك بسرعة أكبر وإنشاء حِزم APK أصغر حجمًا للمستخدمين.
الدرس التطبيقي حول الترميز: أول حزمة تطبيق Android
دليل مفصّل حول إنشاء "مجموعة حزمات تطبيق Android" وإضافة ميزات إليها
تنسيق "مجموعة حزمات تطبيق Android"
تعرَّف على مزيد من المعلومات حول كيفية تنظيم برنامج سطر الأوامر bundletool لحِزمة تطبيقات من خلال رمز تطبيقك وموارده.