یک بسته برنامه با قابلیت فوری ایجاد کنید

با گنجاندن آن به عنوان بخشی از یک بسته برنامه Android، یک تجربه Google Play Instant ایجاد می‌کنید. چنین بسته‌ای به‌عنوان بسته نرم‌افزار فعال فوری شناخته می‌شود. این سند به شما نشان می‌دهد که چگونه محیط برنامه‌نویسی خود را برای بسته‌های برنامه با قابلیت فوری تنظیم کنید، و همچنین نحوه پیکربندی، ساخت، آزمایش و انتشار یک بسته برنامه با قابلیت فوری را نشان می‌دهد.

اگر یک پروژه برنامه فوری موجود دارید که از افزونه ویژگی منسوخ شده ( com.android.feature ) استفاده می کند، بیاموزید که چگونه برنامه فوری خود را برای پشتیبانی از Android App Bundles منتقل کنید .

محیط توسعه را تنظیم کنید

برای ارائه یک تجربه فوری در یک بسته برنامه، باید به SDK توسعه فوری Google Play دسترسی داشته باشید. می توانید SDK را با استفاده از یکی از روش های زیر نصب کنید:

علاوه بر این، اگر می خواهید تجربه فوری خود را به صورت محلی آزمایش کنید، به یک دستگاه فیزیکی یا مجازی دسترسی داشته باشید.

با شرایط اجرای مورد نیاز آشنا شوید

Google Play Instant برای امنیت بیشتر، بسته‌های برنامه‌های فعال فوری را در نوع خاصی از SELinux sandbox اجرا می‌کند. این جعبه ماسه‌ای اجازه زیرمجموعه‌ای از مجوزها و همچنین انواع محدودی از تعامل با سایر برنامه‌ها را می‌دهد. در بخش های بعدی با جزئیات بیشتری ویژگی های این سندباکس توضیح داده شده است.

مجوزها و عملیات پشتیبانی شده

بسته‌های برنامه فعال فوری فقط می‌توانند از مجوزهای فهرست زیر استفاده کنند:

مدیریت مجوزهای رایج پشتیبانی نشده

در زیر لیستی از مجوزهای رایج و غیر قابل پشتیبانی که باید از برنامه خود حذف کنید و مسیر مهاجرت توصیه شده برای هر کدام آورده شده است:

  • 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 Cloud Messaging (FCM). FCM برای کار کردن به هیچ مجوز اضافی نیاز ندارد.

علاوه بر این، بسته‌های برنامه فعال فوری نمی‌توانند کارهای زیر را انجام دهند:

دسترسی به برنامه های نصب شده

هنگام ایجاد یک تجربه فوری، به خاطر داشته باشید که نمی‌تواند با برنامه‌های نصب شده روی دستگاه تعامل داشته باشد، مگر اینکه یکی از موارد زیر درست باشد:

  • یک یا چند فعالیت در یک برنامه نصب‌شده، عنصر android:visibleToInstantApps آن را روی true تنظیم کرده است - این عنصر برای برنامه‌های دارای Android 8.0 (سطح API 26) یا بالاتر در دسترس است.
  • یک برنامه نصب شده حاوی یک فیلتر هدف است که شامل CATEGORY_BROWSABLE است.
  • تجربه فوری ارسال یک هدف با استفاده از کنش ACTION_SEND ، ACTION_SENDTO ، یا ACTION_SEND_MULTIPLE است.

پروژه خود را برای تجربه های فوری پیکربندی کنید

برای سازگاری با Google Play Instant، باید چندین جنبه از بسته نرم افزاری فعال فوری خود را با دقت پیکربندی کنید. بخش های بعدی این ملاحظات را شرح می دهند.

وابستگی پروژه را اعلام کنید

برای استفاده از Google Play Instant API در برنامه خود، اعلان زیر را در فایل پیکربندی build.gradle ماژول برنامه خود قرار دهید:

شیار

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

کاتلین

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

کدهای نسخه صحیح را تعریف کنید

کد نسخه تجربه فوری برنامه شما باید کمتر از کد نسخه برنامه قابل نصب باشد. انتظار این است که کاربران از تجربه Google Play Instant به دانلود و نصب برنامه روی دستگاه خود بروند. فریم ورک اندروید این انتقال را به‌روزرسانی اپلیکیشن می‌داند.

برای اطمینان از پیروی از طرح نسخه‌سازی مورد انتظار کاربران، یکی از این استراتژی‌ها را دنبال کنید:

  • کدهای نسخه برای تجربه Google Play Instant را در 1 راه اندازی مجدد کنید.
  • کد نسخه APK قابل نصب را به تعداد زیادی مانند 1000 افزایش دهید تا مطمئن شوید که فضای کافی برای افزایش شماره نسخه تجربه فوری شما وجود دارد.

اشکالی ندارد که برنامه فوری و برنامه قابل نصب خود را در دو پروژه مجزای Android Studio توسعه دهید. با این حال، اگر این کار را انجام دهید، برای انتشار برنامه خود در Google Play باید موارد زیر را انجام دهید:

  1. از یک نام بسته در هر دو پروژه Android Studio استفاده کنید.
  2. در کنسول Google Play، هر دو نوع را در یک برنامه آپلود کنید.

برای جزئیات بیشتر در مورد تنظیم نسخه برنامه، به نسخه برنامه خود مراجعه کنید.

نسخه جعبه ایمنی هدف را به روز کنید

فایل AndroidManifest.xml برنامه فوری شما برای هدف قرار دادن محیط جعبه ایمنی که Google Play Instant پشتیبانی می‌کند باید به‌روزرسانی شود. همانطور که در قطعه کد زیر نشان داده شده است، می توانید این به روز رسانی را با افزودن ویژگی android:targetSandboxVersion به عنصر <manifest> برنامه خود تکمیل کنید:

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

برای اطلاعات بیشتر، مستندات مربوط به ویژگی targetSandboxVersion را ببینید.

ماژول های برنامه فعال فوری را اعلام کنید

با استفاده از یکی از روش‌های زیر می‌توانید اعلام کنید که بسته برنامه شما از تجربه‌های فوری پشتیبانی می‌کند:

  • اگر یک بسته برنامه موجود دارید که فقط شامل یک ماژول پایه است، می‌توانید به صورت زیر آن را فوراً فعال کنید:

    1. با انتخاب View > Tool Windows > Project از نوار منو، پنل Project را باز کنید.
    2. روی ماژول پایه خود، که معمولاً «برنامه» نام دارد، راست کلیک کرده و Refactor > Enable Instant Apps Support را انتخاب کنید.
    3. در گفتگوی ظاهر شده، ماژول پایه خود را از منوی کشویی انتخاب کنید.
    4. روی OK کلیک کنید.

    Android Studio اعلان زیر را به مانیفست ماژول اضافه می کند:

    <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
        <dist:module dist:instant="true" />
        ...
    </manifest>
    
  • اگر یک بسته برنامه موجود دارید که حاوی چندین ماژول است، می‌توانید یک ماژول ویژگی فعال فوری ایجاد کنید . این فرآیند همچنین ماژول پایه برنامه شما را به صورت فوری فعال می کند و به شما این امکان را می دهد که از چندین نقطه ورود فوری در برنامه خود پشتیبانی کنید .

پشتیبانی برای ورود به سیستم اضافه کنید

اگر تجربه فوری شما به کاربران اجازه ورود به سیستم را می‌دهد، بسته برنامه فعال فوری شما باید از Smart Lock for Passwords در Android پشتیبانی کند . اگر در حال ساخت یک بازی «بازی فوری» هستید، به جای آن باید از ورود به سیستم خدمات بازی‌های Google Play استفاده کنید.

از محیط اجرا پشتیبانی کنید

برای سازگاری با SELinux sandbox که تجربه‌های فوری در آن اجرا می‌شوند، هنگام ایجاد بسته نرم افزاری فعال فوری خود، موارد زیر را در نظر داشته باشید:

  • مقدار myUid() را به اشتراک نگذارید، که UID اختصاص داده شده به هسته فرآیند برنامه شما است.
  • اگر برنامه شما Android 8.1 (سطح API 27) یا پایین‌تر را هدف قرار می‌دهد، یک فایل پیکربندی امنیت شبکه ایجاد کنید و cleartextTrafficPermitted را روی false تنظیم کنید. تجربه‌های فوری از ترافیک HTTP پشتیبانی نمی‌کنند. برای برنامه هایی که اندروید 9 یا بالاتر را هدف قرار می دهند، ترافیک متن شفاف به طور پیش فرض غیرفعال است.
  • تجربه فوری شما تا زمانی که حافظه پنهان تجربه فوری پاک نشود در دستگاه کاربر بارگیری می‌شود، که در یکی از شرایط زیر رخ می‌دهد:

    • حافظه پنهان تجربه فوری جمع آوری شده است زیرا حافظه دستگاه در دسترس کم است.
    • کاربر دستگاه خود را مجددا راه اندازی می کند.

    اگر هر یک از فرآیندها رخ دهد، کاربر باید تجربه فوری شما را دوباره دانلود کند تا بتواند با آن تعامل داشته باشد.

  • اگر فضای ذخیره‌سازی سیستم بسیار کم است، ممکن است داده‌های کاربر تجربه فوری شما از حافظه داخلی حذف شود. بنابراین، توصیه می شود به طور دوره ای داده های کاربر را با سرور برنامه خود همگام سازی کنید تا پیشرفت کاربر حفظ شود.

منطق را برای گردش های کاری تجربه فوری اضافه کنید

پس از اینکه بسته برنامه خود را طوری پیکربندی کردید که از تجربیات فوری پشتیبانی کند، منطقی را که در بخش‌های زیر نشان داده شده است اضافه کنید.

بررسی کنید که آیا برنامه در حال اجرای تجربه فوری است یا خیر

اگر برخی از منطق برنامه شما به این بستگی دارد که آیا کاربر درگیر تجربه فوری شما است یا خیر، روش isInstantApp() را فراخوانی کنید. اگر فرآیند در حال اجرا یک تجربه فوری باشد، این روش true را برمی‌گرداند.

نمایش درخواست نصب

اگر در حال ساخت یک نسخه آزمایشی از برنامه یا بازی خود هستید، Google Play Instant به شما امکان می‌دهد پیامی را در تجربه فوری خود نمایش دهید و از کاربران دعوت می‌کند تا تجربه کامل را روی دستگاه خود نصب کنند. برای نمایش این اعلان، همانطور که در قطعه کد زیر نشان داده شده است، از روش InstantApps.showInstallPrompt() استفاده کنید:

کاتلین

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

جاوا

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);
    }
}

داده ها را به یک تجربه نصب شده منتقل کنید

اگر کاربر از تجربه فوری شما لذت می برد، ممکن است تصمیم بگیرد برنامه شما را نصب کند. برای ارائه یک تجربه کاربری خوب، مهم است که داده های کاربر از تجربه فوری شما به نسخه کامل برنامه شما منتقل شود.

اگر کاربر از دستگاهی استفاده می‌کند که دارای Android 8.0 (سطح API 26) یا بالاتر است، و اگر برنامه شما targetSandboxVersion 2 را مشخص کرده باشد ، داده‌های کاربر به‌طور خودکار به نسخه کامل برنامه شما منتقل می‌شود. در غیر این صورت باید اطلاعات را به صورت دستی انتقال دهید. برای انجام این کار، از یکی از API های زیر استفاده کنید:

  • برای کاربرانی که از دستگاه‌هایی استفاده می‌کنند که Android 8.0 (سطح API 26) و بالاتر را اجرا می‌کنند، از Cookie API - برنامه نمونه استفاده کنید.
  • اگر کاربران می‌توانند با تجربه شما در دستگاه‌هایی که Android نسخه 7.1 (سطح API 25) و پایین‌تر دارند تعامل داشته باشند، پشتیبانی از Storage API - برنامه نمونه را اضافه کنید.

بسته نرم افزاری را بسازید

می‌توانید از اندروید استودیو یا رابط خط فرمان برای ساخت بسته نرم افزاری فعال فوری خود استفاده کنید.

اندروید استودیو

با استفاده از Android Studio، می‌توانید با انتخاب Build > Build Bundle(s) / APK (ها) > Build Bundle(ها) برنامه خود را بسازید. برای اطلاعات بیشتر در مورد ساخت پروژه خود، به ساخت پروژه خود مراجعه کنید.

رابط خط فرمان

شما همچنین می توانید بسته نرم افزاری را از خط فرمان با استفاده از Gradle بسازید .

پشتیبانی از معماری های 64 بیتی

برنامه های منتشر شده در Google Play باید از معماری 64 بیتی پشتیبانی کنند. افزودن یک نسخه 64 بیتی از برنامه شما باعث بهبود عملکرد می شود و شما را برای دستگاه هایی با سخت افزار فقط 64 بیتی آماده می کند. درباره پشتیبانی 64 بیتی بیشتر بدانید .

تجربه فوری را آزمایش کنید

قبل از انتشار بسته برنامه با قابلیت فوری خود، می‌توانید تجربه فوری را از یکی از مکان‌های زیر برای تأیید عملکرد آزمایش کنید:

اندروید استودیو

برای آزمایش تجربه فوری برنامه خود در دستگاه محلی با استفاده از Android Studio، مراحل زیر را کامل کنید:

  1. اگر نسخه نصب شده برنامه خود را روی دستگاه آزمایشی خود دارید، آن را حذف نصب کنید.
  2. در Android Studio، از گزینه‌های نصبی که در برگه عمومی پنجره Run/Debug Configurations ظاهر می‌شوند، کادر انتخاب Deploy as instant app را فعال کنید.
  3. Run > Run را در نوار منو انتخاب کنید یا روی Run کلیک کنید در نوار ابزار، سپس دستگاهی را که می‌خواهید تجربیات فوری برنامه‌تان را در آن آزمایش کنید، انتخاب کنید. تجربه فوری برنامه شما در دستگاه آزمایشی که انتخاب کرده‌اید بارگیری می‌شود.

رابط خط فرمان

برای آزمایش تجربه فوری برنامه خود در یک ماشین محلی با استفاده از خط فرمان، مراحل زیر را کامل کنید:

  1. اگر نسخه نصب شده برنامه خود را روی دستگاه آزمایشی خود دارید، آن را حذف نصب کنید.
  2. با وارد کردن دستور زیر، برنامه فوری خود را در دستگاه آزمایشی خود بارگیری کرده و اجرا کنید:
ia run output-from-build-command

مسیر تست داخلی

برای آزمایش تجربه فوری برنامه خود از فروشگاه Play یا یک بنر در وب سایت خود، برنامه را در مسیر آزمایشی داخلی کنسول Play منتشر کنید.

برای انتشار برنامه خود در مسیر تست داخلی، مراحل زیر را انجام دهید:

  1. با دنبال کردن مراحل در آپلود بسته برنامه خود در راهنمای کنسول Play، بسته برنامه خود را آپلود کنید.
  2. بسته آپلود شده را برای انتشار در مسیر تست داخلی آماده کنید. برای اطلاعات بیشتر، به مقاله پشتیبانی درباره نحوه آماده‌سازی و عرضه نسخه‌ها مراجعه کنید.
  3. وارد حساب آزمایشگر داخلی دستگاه شوید، سپس تجربه فوری خود را از یکی از سطوح زیر راه اندازی کنید:

    • دکمه Try Now از فهرست فروشگاه Play برنامه شما.
    • پیوندی از یک بنر در وب سایت برنامه شما.

بسته نرم افزاری را در مسیر تولید منتشر کنید

برای انتشار بسته برنامه با قابلیت فوری خود، مراحل زیر را کامل کنید:

  1. اگر قبلاً این کار را نکرده‌اید، بسته برنامه خود را با کلید انتشار امضا کنید و بسته برنامه را در Play Console آپلود کنید .
  2. در کنسول Play، مدیریت انتشار > برنامه‌های فوری Android را باز کنید، سپس به مسیر تولید برنامه فوری بروید.
  3. Update from Library را انتخاب کنید، سپس بسته نرم افزاری فعال فوری را که آپلود کرده اید انتخاب کنید.

محل انتشار تجربه فوری خود را انتخاب کنید

این امکان وجود دارد که یک تجربه فوری از برنامه خود را در زیر مجموعه ای از کشورها و مناطقی که افراد می توانند برنامه شما را نصب کنند، راه اندازی کنید. این قابلیت در مواردی مفید است که می خواهید تجربه فوری برنامه خود را برای کاربرانی که در مجموعه خاصی از کشورها و مناطق زندگی می کنند تبلیغ کنید.

منابع اضافی

برای کسب اطلاعات بیشتر درباره ایجاد تجربه‌های فوری و بسته‌های برنامه Android، به منابع زیر مراجعه کنید:

ویدئو: بسته بندی یک برنامه در یک لحظه
در این جلسه از Android Dev Summit '18 با نحوه افزودن یک تجربه فوری به Android App Bundle آشنا شوید.
ویدیو: برنامه‌های کوچک‌تر را با Android App Bundle منتشر کنید
بیاموزید که چگونه بسته‌های برنامه به شما کمک می‌کنند برنامه‌تان را سریع‌تر توسعه دهید و فایل‌های APK کوچک‌تری برای کاربرانتان ایجاد کنید.
Codelab: اولین بسته برنامه Android شما
راهنمای گام به گام ایجاد یک Android App Bundle و افزودن ویژگی ها به آن.
قالب Android App Bundle
درباره اینکه چگونه برنامه خط فرمان bundletool یک بسته برنامه را از روی کد و منابع برنامه خود سازماندهی می کند، بیشتر بیاموزید.