هشدار: قابلیت Instant در گوگل پلی دیگر در دسترس نخواهد بود. از دسامبر ۲۰۲۵، انتشار Instant Apps از طریق گوگل پلی امکانپذیر نخواهد بود و تمام APIهای Instant سرویسهای گوگل پلی دیگر کار نخواهند کرد. کاربران دیگر با استفاده از هیچ مکانیزمی، Instant Apps را از طریق Play دریافت نخواهند کرد.
ما این تغییر را بر اساس بازخورد توسعهدهندگان و سرمایهگذاریهای مداوم خود برای بهبود اکوسیستم از زمان معرفی Google Play Instant انجام میدهیم.
برای ادامه بهینهسازی برای رشد کاربر، ما توسعهدهندگان را تشویق میکنیم که کاربران را به برنامه یا بازی معمولی خود ارجاع دهند و در صورت لزوم از لینکهای عمیق برای هدایت آنها به مسیرهای خاص یا ویژگیهای مربوطه استفاده کنند.
شما با قرار دادن گوگل پلی آنی به عنوان بخشی از یک بسته نرمافزاری اندروید ، یک تجربه فوری ایجاد میکنید. چنین بستهای به عنوان بسته نرمافزاری با قابلیت فوری شناخته میشود. این سند به شما نشان میدهد که چگونه محیط توسعه خود را برای بستههای نرمافزاری با قابلیت فوری تنظیم کنید، و همچنین چگونه یک بسته نرمافزاری با قابلیت فوری را پیکربندی، ساخت، آزمایش و منتشر کنید.
اگر یک پروژه اپلیکیشن فوری موجود دارید که از افزونهی ویژگی منسوخشده ( com.android.feature ) استفاده میکند، یاد بگیرید که چگونه اپلیکیشن فوری خود را برای پشتیبانی از بستههای اپلیکیشن اندروید (Android App Bundles) منتقل کنید .
محیط توسعه را تنظیم کنید
برای ارائه یک تجربه فوری در یک بسته برنامه، به دسترسی به SDK توسعه فوری گوگل پلی نیاز دارید. میتوانید SDK را با استفاده از یکی از روشهای زیر نصب کنید:
- اندروید استودیو ۳.۶ یا بالاتر را نصب کنید . پس از باز کردن اندروید استودیو، کیت توسعه نرمافزار فوری گوگل پلی را از تب ابزارهای SDK در SDK Manager دانلود کنید.
نصب از خط فرمان:
cd path/to/android/sdk/tools/bin && \ ./sdkmanager 'extras;google;instantapps'
علاوه بر این، اگر میخواهید تجربه فوری خود را به صورت محلی آزمایش کنید، به یک دستگاه فیزیکی یا مجازی دسترسی پیدا کنید.
آشنایی با شرایط لازم برای اجرا
گوگل پلی آنی (Google Play Instant) بستههای نرمافزاری دارای قابلیت Instant را برای امنیت بیشتر، در نوع خاصی از جعبهی شنی SELinux اجرا میکند. این جعبهی شنی، زیرمجموعهای از مجوزها و همچنین انواع محدودی از تعاملات با سایر برنامهها را مجاز میداند. بخشهای بعدی، ویژگیهای این جعبهی شنی را با جزئیات بیشتری توضیح میدهند.
مجوزها و عملیات پشتیبانیشده
بستههای برنامهی دارای قابلیت Instant فقط میتوانند از مجوزهای فهرست زیر استفاده کنند:
-
ACCESS_COARSE_LOCATION -
ACCESS_FINE_LOCATION -
ACCESS_NETWORK_STATE -
BILLING- از نسخه ۱.۰ کتابخانه صورتحساب Play منسوخ شده است. -
CAMERA -
INSTANT_APP_FOREGROUND_SERVICE– فقط در اندروید ۸.۰ (سطح API ۲۶) و بالاتر. -
INTERNET -
READ_PHONE_NUMBERS- فقط در اندروید ۸.۰ (سطح API ۲۶) و بالاتر. -
RECORD_AUDIO -
VIBRATE -
WAKE_LOCK
مدیریت مجوزهای رایج پشتیبانی نشده
در زیر لیستی از مجوزهای رایج و پشتیبانی نشده که باید از برنامه خود حذف کنید و مسیر مهاجرت پیشنهادی برای هر یک آمده است:
-
ACCESS_WIFI_STATE: ازACCESS_NETWORK_STATEاستفاده کنید که باید اطلاعاتی مشابهACCESS_WIFI_STATEارائه دهد. -
BILLING: این مجوز منسوخ شده است. از کتابخانه صورتحساب گوگل پلی استفاده کنید که دیگر به مجوزcom.android.vending.BILLINGنیازی ندارد. -
READ/WRITE_EXTERNAL_STORAGE: برنامههای فوری به حافظه خارجی دسترسی ندارند؛ به جای آن از حافظه داخلی استفاده میکنند. -
com.google.android.c2dm.permission.RECEIVEوpermission.C2D_MESSAGE: C2DM منسوخ شده است. به Firebase Cloud Messaging (FCM) مهاجرت کنید. FCM برای کار به هیچ مجوز اضافی نیاز ندارد.
علاوه بر این، بستههای برنامه با قابلیت Instant نمیتوانند موارد زیر را انجام دهند:
- از سرویسهای پسزمینه استفاده کنید.
- ارسال اعلانها هنگام اجرا در پسزمینه
دسترسی به برنامههای نصب شده
هنگام توسعه یک تجربه فوری، به خاطر داشته باشید که نمیتواند با برنامههای نصب شده روی دستگاه تعامل داشته باشد، مگر اینکه یکی از موارد زیر صحیح باشد:
- یک یا چند اکتیویتی در یک برنامه نصب شده، عنصر
android:visibleToInstantAppsخود را رویtrueتنظیم کرده است - این عنصر برای برنامههایی که اندروید ۸.۰ (سطح API ۲۶) یا بالاتر را اجرا میکنند، در دسترس است. - یک برنامه نصب شده حاوی یک فیلتر intent است که شامل
CATEGORY_BROWSABLEمیشود. - تجربه فوری، ارسال یک intent با استفاده از اکشنهای
ACTION_SEND،ACTION_SENDTOیاACTION_SEND_MULTIPLEاست.
پروژه خود را برای تجربیات فوری پیکربندی کنید
برای سازگاری با Google Play Instant، باید چندین جنبه از بسته برنامه فعال شده با 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 از ۱ مجدداً راهاندازی کنید.
- کد نسخه APK قابل نصب را به تعداد زیادی، مانند ۱۰۰۰، افزایش دهید تا مطمئن شوید که فضای کافی برای افزایش شماره نسخه تجربه فوری شما وجود دارد.
اشکالی ندارد که برنامه فوری و برنامه قابل نصب خود را در دو پروژه جداگانه اندروید استودیو توسعه دهید. با این حال، اگر این کار را انجام دهید، باید موارد زیر را برای انتشار برنامه خود در گوگل پلی انجام دهید:
- در هر دو پروژه اندروید استودیو از نام بسته یکسانی استفاده کنید.
- در کنسول گوگل پلی، هر دو نوع را در یک برنامه آپلود کنید.
برای جزئیات بیشتر در مورد تنظیم نسخه برنامه خود، به بخش «نسخه برنامه خود را تغییر دهید» مراجعه کنید.
نسخه سندباکس هدف را بهروزرسانی کنید
فایل AndroidManifest.xml برنامه فوری شما باید بهروزرسانی شود تا محیط sandbox که Google Play Instant از آن پشتیبانی میکند را هدف قرار دهد. میتوانید این بهروزرسانی را با اضافه کردن ویژگی android:targetSandboxVersion به عنصر <manifest> برنامه خود، همانطور که در قطعه کد زیر نشان داده شده است، تکمیل کنید:
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
...
android:targetSandboxVersion="2" ...>
برای اطلاعات بیشتر، به مستندات مربوط به ویژگی targetSandboxVersion مراجعه کنید.
ماژولهای برنامه با قابلیت Instant را تعریف کنید
شما میتوانید با استفاده از یکی از روشهای زیر اعلام کنید که بستهی برنامهی شما از تجربیات فوری پشتیبانی میکند:
اگر یک بسته برنامه موجود دارید که فقط شامل یک ماژول پایه است، میتوانید بسته برنامه را به صورت فوری به صورت زیر فعال کنید:
- با انتخاب View > Tool Windows > Project از نوار منو، پنل Project را باز کنید.
- روی ماژول پایه خود که معمولاً «app» نام دارد، کلیک راست کنید و گزینه Refactor > Enable Instant Apps Support را انتخاب کنید.
- در پنجرهای که ظاهر میشود، ماژول پایه خود را از منوی کشویی انتخاب کنید.
- روی تأیید کلیک کنید.
اندروید استودیو عبارت زیر را به مانیفست ماژول اضافه میکند:
<manifest ... xmlns:dist="http://schemas.android.com/apk/distribution"> <dist:module dist:instant="true" /> ... </manifest>اگر یک بسته برنامه موجود دارید که شامل چندین ماژول است، میتوانید یک ماژول ویژگی با قابلیت فعالسازی فوری ایجاد کنید . این فرآیند همچنین ماژول پایه برنامه شما را با قابلیت فعالسازی فوری فعال میکند و به شما این امکان را میدهد که از چندین نقطه ورود فوری در برنامه خود پشتیبانی کنید .
اضافه کردن پشتیبانی برای ورود به سیستم
اگر تجربه فوری شما به کاربران اجازه ورود به سیستم را میدهد، بسته برنامه فعالشده با قابلیت ورود فوری شما باید از قفل هوشمند برای رمزهای عبور در اندروید پشتیبانی کند . اگر در حال ساخت یک بازی «بازی فوری» هستید، باید به جای آن از ورود به سیستم خدمات بازیهای گوگل پلی استفاده کنید.
پشتیبانی از محیط اجرا
برای سازگاری با محیط سندباکس SELinux که تجربههای آنی در آن اجرا میشوند، هنگام ایجاد بسته برنامه با قابلیت آنی خود، موارد زیر را در نظر داشته باشید:
- مقدار
myUid()که شناسه کاربری (UID) اختصاص داده شده توسط هسته به فرآیند برنامه شماست را به اشتراک نگذارید. - اگر برنامه شما اندروید ۸.۱ (سطح API ۲۷) یا پایینتر را هدف قرار میدهد، یک فایل پیکربندی امنیت شبکه ایجاد کنید و
cleartextTrafficPermittedرا رویfalseتنظیم کنید. تجربههای فوری از ترافیک HTTP پشتیبانی نمیکنند. برای برنامههایی که اندروید ۹ یا بالاتر را هدف قرار میدهند، cleartext traffic به طور پیشفرض غیرفعال است. تجربه فوری شما تا زمانی که حافظه پنهان تجربه فوری پاک نشود، در دستگاه کاربر دانلود شده باقی میماند، که این اتفاق در یکی از شرایط زیر رخ میدهد:
- حافظه پنهان تجربه فوری به دلیل کمبود حافظه موجود در دستگاه، جمعآوری زباله میشود.
- کاربر دستگاه خود را مجدداً راهاندازی میکند.
اگر هر یک از این فرآیندها رخ دهد، کاربر برای تعامل با تجربه فوری شما باید آن را دوباره دانلود کند.
اگر سیستم با کمبود فضای ذخیرهسازی مواجه است، ممکن است دادههای کاربری تجربه فوری شما از حافظه داخلی حذف شده باشد. بنابراین، توصیه میشود بهطور دورهای دادههای کاربر را با سرور برنامه خود همگامسازی کنید تا پیشرفت کاربر حفظ شود.
منطق را برای گردشهای کاری با تجربه فوری اضافه کنید
پس از اینکه بسته برنامه خود را طوری پیکربندی کردید که از تجربیات فوری پشتیبانی کند، منطقی را که در بخشهای بعدی نشان داده شده است اضافه کنید.
بررسی کنید که آیا برنامه در حال اجرای تجربه فوری است یا خیر.
اگر برخی از منطق برنامه شما به این بستگی دارد که آیا کاربر در تجربه فوری شما مشارکت دارد یا خیر، متد 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); } }
انتقال دادهها به یک تجربه نصبشده
اگر کاربر از تجربه فوری شما لذت ببرد، ممکن است تصمیم به نصب برنامه شما بگیرد. برای ارائه یک تجربه کاربری خوب، مهم است که دادههای کاربر از تجربه فوری شما به نسخه کامل برنامه شما منتقل شود.
اگر کاربر از دستگاهی استفاده میکند که اندروید ۸.۰ (سطح API 26) یا بالاتر را اجرا میکند، و اگر برنامه شما targetSandboxVersion را برابر با 2 تعیین کرده باشد ، دادههای کاربر به طور خودکار به نسخه کامل برنامه شما منتقل میشوند. در غیر این صورت، باید دادهها را به صورت دستی منتقل کنید. برای انجام این کار، از یکی از API های زیر استفاده کنید:
- برای کاربرانی که از دستگاههایی با اندروید ۸.۰ (سطح API ۲۶) و بالاتر استفاده میکنند، از برنامه نمونه Cookie API استفاده کنید.
- اگر کاربران میتوانند در دستگاههایی که اندروید ۷.۱ (سطح API ۲۵) و پایینتر دارند با تجربه شما تعامل داشته باشند، پشتیبانی از Storage API را اضافه کنید - برنامه نمونه
ساخت بسته نرمافزاری
شما میتوانید از اندروید استودیو یا رابط خط فرمان برای ساخت بسته نرمافزاری با قابلیت Instant استفاده کنید.
اندروید استودیو
با استفاده از اندروید استودیو، میتوانید بسته برنامه خود را با انتخاب Build > Build Bundle(s) / APK(s) > Build Bundle(s) بسازید. برای اطلاعات بیشتر در مورد ساخت پروژه، به Build your project مراجعه کنید.
رابط خط فرمان
همچنین میتوانید بستهی برنامه را از خط فرمان با استفاده از Gradle بسازید .
پشتیبانی از معماریهای ۶۴ بیتی
برنامههای منتشر شده در گوگل پلی باید از معماری ۶۴ بیتی پشتیبانی کنند. اضافه کردن نسخه ۶۴ بیتی برنامه شما، بهبود عملکرد را فراهم میکند و شما را برای دستگاههایی با سختافزار فقط ۶۴ بیتی آماده میکند. درباره پشتیبانی ۶۴ بیتی بیشتر بدانید .
تجربه فوری را آزمایش کنید
قبل از انتشار بسته برنامه با قابلیت Instant، میتوانید تجربه Instant را از یکی از مکانهای زیر آزمایش کنید تا از عملکرد آن اطمینان حاصل کنید:
- با استفاده از اندروید استودیو روی یک دستگاه محلی نصب کنید.
- با استفاده از رابط خط فرمان، روی یک دستگاه محلی نصب کنید.
- در مسیر تست داخلی در کنسول گوگل پلی منتشر کنید.
اندروید استودیو
برای آزمایش تجربه فوری برنامه خود در یک دستگاه محلی با استفاده از اندروید استودیو، مراحل زیر را انجام دهید:
- اگر نسخهای از برنامهتان روی دستگاه آزمایشیتان نصب شده است، آن را حذف نصب کنید.
- در اندروید استودیو، از گزینههای نصب که در تب General در پنجره Run/Debug Configurations ظاهر میشوند، گزینه Deploy as instant app را فعال کنید.
- در نوار منو، گزینه Run > Run را انتخاب کنید، یا روی Run کلیک کنید.
در نوار ابزار، سپس دستگاهی را که میخواهید تجربههای فوری برنامهتان را روی آن آزمایش کنید، انتخاب کنید. تجربه فوری برنامه شما روی دستگاه آزمایشی که انتخاب کردهاید بارگیری میشود.
رابط خط فرمان
برای آزمایش تجربه فوری برنامه خود در یک دستگاه محلی با استفاده از خط فرمان، مراحل زیر را انجام دهید:
- اگر نسخهای از برنامهتان روی دستگاه آزمایشیتان نصب شده است، آن را حذف نصب کنید.
- با وارد کردن دستور زیر، برنامه فوری خود را روی دستگاه آزمایشی خود بارگذاری جانبی کرده و اجرا کنید:
ia run output-from-build-command
مسیر آزمون داخلی
برای آزمایش تجربه فوری برنامه خود از فروشگاه Play یا بنری در وبسایت خود، برنامه را در مسیر آزمایش داخلی در کنسول Play منتشر کنید.
برای انتشار برنامه خود در مسیر تست داخلی، مراحل زیر را انجام دهید:
- با دنبال کردن مراحل موجود در راهنمای « آپلود بسته برنامه خود در کنسول Play»، بسته برنامه خود را آپلود کنید.
- بستهی آپلود شده را برای انتشار در مسیر آزمایشی داخلی آماده کنید. برای اطلاعات بیشتر، به مقالهی پشتیبانی در مورد نحوهی آمادهسازی و انتشار نسخهها مراجعه کنید.
وارد یک حساب کاربری داخلی تستر در یک دستگاه شوید، سپس تجربه فوری خود را از یکی از سطوح زیر اجرا کنید:
- دکمه «اکنون امتحان کنید» از فهرست برنامه شما در فروشگاه Play.
- لینکی از یک بنر در وبسایت برنامه شما.
انتشار بسته نرمافزاری در مسیر تولید
برای انتشار بسته برنامه با قابلیت Instant، مراحل زیر را انجام دهید:
- اگر هنوز این کار را نکردهاید، بسته برنامه خود را با یک کلید انتشار امضا کنید و بسته برنامه را در کنسول Play آپلود کنید .
- در کنسول Play، مدیریت انتشار > برنامههای فوری اندروید را باز کنید، سپس به مسیر تولید برنامه فوری بروید.
- «بهروزرسانی از کتابخانه» را انتخاب کنید، سپس بسته برنامهای که آپلود کردهاید و قابلیت «فوری» دارد را انتخاب کنید.
انتخاب کنید که تجربه فوری خود را کجا منتشر کنید
میتوان تجربهی فوری از اپلیکیشن خود را در زیرمجموعهای از کشورها و مناطقی که افراد میتوانند اپلیکیشن شما را نصب کنند، راهاندازی کرد. این قابلیت در مواردی مفید است که میخواهید تجربهی فوری اپلیکیشن خود را برای کاربرانی که در مجموعهای خاص از کشورها و مناطق ساکن هستند، ارتقا دهید.
منابع اضافی
برای کسب اطلاعات بیشتر در مورد ایجاد تجربیات فوری و بستههای نرمافزاری اندروید، به منابع زیر مراجعه کنید:
- ویدیو: بستهبندی فوری یک برنامه
- در این جلسه از اجلاس توسعهدهندگان اندروید ۲۰۱۸، یاد بگیرید که چگونه یک تجربه فوری به یک بسته نرمافزاری اندروید اضافه کنید.
- ویدیو: انتشار برنامههای کوچکتر با بسته نرمافزاری اندروید
- بیاموزید که چگونه بستههای برنامه به شما کمک میکنند تا برنامه خود را سریعتر توسعه دهید و APK های کوچکتری برای کاربران خود ایجاد کنید.
- Codelab: اولین بسته نرمافزاری اندروید شما
- راهنمای گام به گام برای ایجاد یک بسته نرمافزاری اندروید و افزودن ویژگیها به آن.
- قالب بسته نرمافزاری اندروید
- درباره نحوه سازماندهی یک بسته نرمافزاری از کد و منابع برنامه شما توسط برنامه خط فرمان
bundletoolبیشتر بدانید.