کاهش حجم برنامه

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

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

برنامه را به عنوان Android App Bundle آپلود کنید

ساده‌ترین راه برای صرفه‌جویی فوری در اندازه برنامه هنگام انتشار در Google Play، آپلود برنامه خود به‌عنوان یک Android App Bundle است که یک قالب انتشار جدید است که شامل همه کدها و منابع کامپایل‌شده برنامه شما است و تولید APK و امضای آن را به Google Play به تعویق می‌اندازد. .

اندازه کد زمان اجرا را کاهش دهید

کدهایی را بررسی کنید که برنامه شما در زمان اجرا از آنها استفاده نمی کند، برای مثال هر کلاس بزرگ یا کدی که به طور خودکار تولید می شود. بهینه‌سازهای کد مانند R8 می‌توانند به بهینه‌سازی و کوچک کردن اندازه کد کمک کنند، اما نمی‌توانند با کد محافظت شده توسط ثابت‌های زمان اجرا مقابله کنند. برای بهترین استفاده از ابزارهای مختلف بهینه سازی، پرچم های چک را با ثابت های زمان کامپایل جایگزین کنید. می‌توانید کوچک کردن کد و منبع را در فایل پیکربندی gradle خود فعال کنید:

android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            isShrinkResources = true
        }
    }
}

طرح های غیر ضروری را حذف کنید

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

ویژگی های کم استفاده را دوباره ارزیابی کنید

به طور خاص برای Android (نسخه Go) با غیرفعال کردن ویژگی هایی که معیارهای کاربر فعال روزانه (DAU) کم دارند، بهینه سازی کنید. نمونه‌هایی از این موارد شامل حذف انیمیشن‌های پیچیده، فایل‌های GIF بزرگ، یا هر افزودنی زیبایی‌شناختی دیگری است که برای موفقیت برنامه ضروری نیست.

از تحویل پویا استفاده کنید

Play Feature Delivery از قابلیت‌های پیشرفته بسته‌های برنامه استفاده می‌کند، که به برخی از ویژگی‌های برنامه شما امکان می‌دهد به صورت مشروط تحویل داده شوند یا در صورت درخواست دانلود شوند. می توانید از ماژول های ویژگی برای تحویل سفارشی استفاده کنید. یکی از مزایای منحصر به فرد ماژول های ویژگی، امکان سفارشی کردن نحوه و زمان بارگیری ویژگی های مختلف برنامه شما در دستگاه های دارای Android نسخه 5.0 (سطح API 21) یا بالاتر است.

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

می‌توانید از ویژگی Android Gradle resConfigs برای حذف فایل‌های منبع جایگزینی که برنامه شما به آن نیاز ندارد استفاده کنید. اگر از کتابخانه‌ای استفاده می‌کنید که شامل منابع زبانی (مانند AppCompat یا Google Play Services) است، برنامه شما بدون در نظر گرفتن ترجمه برنامه، تمام رشته‌های زبان ترجمه‌شده برای پیام‌های کتابخانه را شامل می‌شود. اگر می‌خواهید فقط زبان‌هایی را نگه دارید که برنامه شما به طور رسمی از آنها پشتیبانی می‌کند، می‌توانید آن زبان‌ها را با استفاده از ویژگی resConfig مشخص کنید. هر منبعی برای زبان های مشخص نشده حذف می شود.

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


android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

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

اگر رشته داده شده در رابط کاربری برنامه قابل مشاهده نیست، دیگر لازم نیست آن را ترجمه کنید. رشته‌ها به منظور اشکال‌زدایی، پیام‌های استثنایی یا URL‌ها باید در کد رشته‌ای باشند، نه منابع.

برای مثال، زحمت ترجمه URL ها را نداشته باشید.

<string name="car_frx_device_incompatible_sol_message">
  This device doesn\'t support Android Auto.\n
  &lt;a href="https://support.google.com/androidauto/answer/6395843"&gt;Learn more&lt;/a&gt;
</string>

ممکن است &lt; و &gt ، زیرا این کاراکترهای فرار برای < و > هستند. آنها در اینجا مورد نیاز هستند زیرا اگر بخواهید یک تگ <a> را در داخل تگ <string> قرار دهید، کامپایلر منبع Android آنها را حذف می کند زیرا تگ را نمی شناسد. با این حال، این بدان معنی است که شما برچسب های HTML و URL را به 78 زبان ترجمه می کنید. در عوض، می توانید HTML را حذف کنید:

<string name="car_frx_device_incompatible_sol_message">
         This device doesn\'t support Android Auto.
</string>

باینری های بومی را با وابستگی های رایج ترکیب کنید

اگر برنامه شما دارای پیاده سازی های مختلف Java Native Interface (JNI) با وابستگی های اساسی مشترک است، پس باینری های مختلف اندازه APK را با اجزای اضافی افزایش می دهند. شما می توانید چندین باینری JNI را در یک فایل باینری واحد JNI ترکیب کنید در حالی که فایل های جاوا و JNI را جدا نگه دارید. این می تواند اندازه APK شما را به طور چشمگیری کاهش دهد.