اندازه برنامه فوری خود را کاهش دهید

هشدار: قابلیت Instant در گوگل پلی دیگر در دسترس نخواهد بود. از دسامبر ۲۰۲۵، انتشار Instant Apps از طریق گوگل پلی امکان‌پذیر نخواهد بود و تمام APIهای Instant سرویس‌های گوگل پلی دیگر کار نخواهند کرد. کاربران دیگر با استفاده از هیچ مکانیزمی، Instant Apps را از طریق Play دریافت نخواهند کرد.

ما این تغییر را بر اساس بازخورد توسعه‌دهندگان و سرمایه‌گذاری‌های مداوم خود برای بهبود اکوسیستم از زمان معرفی Google Play Instant انجام می‌دهیم.

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

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

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

بازسازی به چندین ماژول ویژگی

بزرگترین بهبود در اندازه دودویی برنامه شما زمانی رخ می‌دهد که برنامه را به چندین ماژول ویژگی تبدیل کنید. با یک ماژول ویژگی پایه شروع کنید، سپس گردش‌های کاری مرتبط با موضوع را در ماژول‌های ویژگی خودشان استخراج کنید. یک فعالیت شروع و URL منحصر به فرد به هر ماژول ویژگی اختصاص دهید تا کاربران بتوانند گردش کاری ماژول را با موفقیت تکمیل کنند.

هنگام ایجاد ماژول‌های ویژگی، ماژول ویژگی پایه را تا حد امکان کوچک نگه دارید. به طور خاص، به بخش‌هایی از برنامه خود که نیاز به دسترسی به کتابخانه‌های وابسته دارند، توجه زیادی داشته باشید. اگر فقط یک ماژول ویژگی از یک کتابخانه خاص استفاده می‌کند، آن کتابخانه را در خود ماژول ویژگی وارد کنید، نه در ماژول ویژگی پایه. به خاطر داشته باشید که برای انتشار یک برنامه فوری برای یک ماژول ویژگی خاص، اندازه کل آن ماژول ویژگی و ماژول ویژگی پایه باید کمتر از 15 مگابایت باشد.

بهترین شیوه‌ها

هنگام بازسازی برنامه خود، نکات زیر را در نظر داشته باشید:

برای هر دو نوع برنامه از کدبیس یکسان استفاده کنید
شما می‌توانید فرآیند مدیریت پروژه برنامه خود را با استفاده از یک کدبیس ماژولار یکسان برای ایجاد برنامه نصب شده و برنامه‌های فوری خود، ساده کنید.
طراحی برای ماژول‌های چندمنظوره
حتی اگر برنامه شما فقط یک گردش کار دارد و فعلاً فقط به یک ماژول ویژگی نیاز دارد، باز هم ایده خوبی است که برای چندین ماژول ویژگی طراحی کنید. به این ترتیب، می‌توانید ماژول‌های موجود را بدون تأثیر بر اندازه ماژول ویژگی اصلی به برنامه خود اضافه کنید.
در ابتدا روی محدودیت اندازه ماژول ویژگی تمرکز نکنید
محدودیت‌های اندازه ماژول‌های ویژه برای فایل‌های باینری محلی اعمال نمی‌شود. همچنین می‌توانید یک برنامه فوری را از طریق مسیر تست داخلی منتشر کنید که محدودیت ۱۵ مگابایتی را برای اندازه ماژول‌های ویژه اعمال می‌کند. فقط مسیرهای آلفا و تولید محدودیت ۱۵ مگابایتی را اعمال می‌کنند.

به‌روزرسانی منابع برنامه

برخی از برنامه‌ها، به ویژه آن‌هایی که تاریخچه کدبیس طولانی‌تری دارند، حاوی منابعی هستند که فایل‌های باینری برنامه شما دیگر از آن‌ها استفاده نمی‌کنند. همانطور که به دنبال راه‌هایی برای کوچک‌تر کردن ماژول‌های برنامه خود هستید، منابع رایج کدهای غیرضروری زیر را در نظر بگیرید.

کاهش حجم فایل تصاویر

شما می‌توانید با استفاده از فرمت فایل WebP به جای PNG، حجم کلی فایل‌های قابل ترسیم برنامه خود را به میزان قابل توجهی کاهش دهید. Google Play Instant پشتیبانی کاملی از WebP، از جمله شفافیت و فشرده‌سازی بدون افت کیفیت، ارائه می‌دهد، بنابراین کیفیت تصویر یکسان باقی می‌ماند.

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

زبان‌های بلااستفاده را حذف کنید

اگر برنامه شما از چندین زبان پشتیبانی می‌کند، تا حد امکان منابع محلی را کاهش دهید. این مرحله به ویژه در صورتی مفید است که از کتابخانه "app compat" مانند android.support.v7.appcompat استفاده می‌کنید. این کتابخانه شامل پیام‌هایی به زبان‌های مختلف است که ممکن است برنامه شما از برخی از آنها پشتیبانی نکند.

برای کسب اطلاعات بیشتر، نحوه حذف منابع جایگزین بلااستفاده ، به ویژه زبان‌های بلااستفاده، را بررسی کنید.

حذف فایل‌های اضافی

ممکن است برنامه شما دیگر از برخی از منابعی که به پروژه خود وارد کرده‌اید استفاده نکند. برای کمک به حذف این منابع، اندروید استودیو برای این وضعیت خاص، بررسی Lint را ارائه می‌دهد. برای استفاده از این ابزار، مراحل زیر را انجام دهید:

  1. کلیدهای Control+Alt+Shift+I (در سیستم عامل مک Command+Alt+Shift+I ) را فشار دهید.
  2. در کادر محاوره‌ای که ظاهر می‌شود، عبارت "unused resources" را تایپ کنید.
  3. برای شروع فرآیند بازرسی میزان مصرف منابع، گزینه منابع استفاده نشده را انتخاب کنید.

اگر منابع بزرگی در برنامه شما باقی مانده است، بررسی کنید که آیا امکان دارد آنها را از برنامه خود خارج کرده و پس از شروع تعامل کاربر با برنامه، به عنوان فایل‌های مستقل دانلود کنید. این نوع تأخیر در بارگذاری تصویر معمولاً نیاز به تغییر کد دارد، اما می‌تواند با دانلود فقط منابعی که کاربر صریحاً درخواست می‌کند، حجم فایل برنامه فوری شما را به میزان قابل توجهی کاهش دهد.

کتابخانه‌های بلااستفاده را حذف کنید

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

  • کتابخانه‌های بومی: کتابخانه‌هایی که حاوی کد بومی هستند که برنامه فوری شما هرگز آنها را اجرا نمی‌کند.
  • وابستگی‌های انتقالی: کتابخانه‌هایی که کتابخانه‌های وارد شده برنامه شما به آنها وابسته هستند.

اندروید استودیو چندین ابزار مفید برای شناسایی هرگونه وابستگی اضافی در پروژه برنامه شما دارد:

کتابخانه‌های خارجی

نمای پروژه اندروید استودیو شامل یک بخش کتابخانه‌های خارجی است.

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

تحلیلگر APK

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

بعد از اینکه مشخص کردید برنامه شما به کدام کتابخانه‌ها نیاز ندارد، با اضافه کردن خطوطی مشابه موارد زیر به فایل Gradle build خود، آنها را از لیست حذف کنید:

<feature_module>/build.gradle

گرووی

dependencies {
    implementation('some-important-but-large-library') {
        exclude group: 'com.example.imgtools', module: 'native'
    }
}

کاتلین

dependencies {
    implementation('some-important-but-large-library') {
        exclude(group = "com.example.imgtools", module = "native")
    }
}

برای اطلاعات بیشتر در مورد کاهش حجم کل فایل‌های import شده برای وابستگی‌های برنامه‌تان، به راهنمای Gradle برای مدیریت وابستگی‌ها مراجعه کنید.

پیاده‌سازی تحویل ابری دارایی‌ها

اگر نیاز به کاهش بیشتر اندازه دارید، ممکن است لازم باشد به تحویل ابری دارایی‌ها تکیه کنید.