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

پروفایل‌های راه‌اندازی زیرمجموعه‌ای از پروفایل‌های پایه هستند. پروفایل‌های راه‌اندازی توسط سیستم ساخت برای بهینه‌سازی بیشتر کلاس‌ها و متدهای موجود در آنها با بهبود چیدمان کد در فایل‌های DEX فایل APK شما استفاده می‌شوند. با پروفایل‌های راه‌اندازی، راه‌اندازی برنامه شما معمولاً بین ۱۵ تا ۳۰ درصد سریع‌تر از زمانی است که فقط از پروفایل‌های پایه استفاده می‌کنید.

شکل ۱. بهبود محلیت کد از بهینه‌سازی طرح‌بندی DEX.

الزامات

توصیه می‌کنیم از Startup Profiles به همراه ابزارهای زیر استفاده کنید:

  • جت‌پک Macrobenchmark نسخه ۱.۲.۰ یا بالاتر
  • افزونه اندروید گریدل ۸.۲ یا بالاتر
  • اندروید استودیو ایگوانا یا بالاتر

علاوه بر این، به تنظیمات زیر در برنامه خود نیاز دارید:

  • R8 فعال شده است. برای نسخه آزمایشی خود، isMinifyEnabled = true قرار دهید.
  • بهینه‌سازی طرح‌بندی DEX فعال شد. در بلوک baselineProfile {} از فایل ساخت ماژول برنامه، مقدار dexLayoutOptimization = true قرار دهید.

ایجاد پروفایل استارتاپی

اندروید استودیو وقتی از الگوی پیش‌فرض تولیدکننده‌ی پروفایل پایه استفاده می‌کنید، یک پروفایل راه‌اندازی (Startup Profile) در کنار یک پروفایل پایه (Baseline Profile) ایجاد می‌کند.

مراحل کلی ایجاد و تولید یک پروفایل راه‌اندازی (Startup Profile) مشابه مراحل ایجاد یک پروفایل پایه (Baseline Profile) است.

روش پیش‌فرض برای ایجاد یک پروفایل راه‌اندازی، استفاده از الگوی ماژول تولیدکننده پروفایل پایه (Baseline Profile Generator) از داخل اندروید استودیو است. این شامل تعاملات راه‌اندازی است که یک پروفایل راه‌اندازی اولیه را تشکیل می‌دهند. برای تقویت این پروفایل راه‌اندازی با سفرهای کاربری حیاتی (Critical User Journeys (CUJs)، CUJهای راه‌اندازی برنامه خود را به یک بلوک rule با includeInStartupProfile تنظیم شده روی true اضافه کنید. برای برنامه‌های ساده، راه‌اندازی MainActivity برنامه ممکن است کافی باشد. برای برنامه‌های پیچیده‌تر، اضافه کردن رایج‌ترین نقاط ورود به برنامه خود، مانند شروع برنامه از صفحه اصلی یا راه‌اندازی به یک لینک عمیق (deep link) را در نظر بگیرید.

قطعه کد زیر یک مولد پروفایل پایه (به طور پیش‌فرض فایل BaselineProfileGenerator.kt ) را نشان می‌دهد که شامل راه‌اندازی به یک لینک عمیق است. لینک عمیق مستقیماً به فید خبری برنامه می‌رود، نه صفحه اصلی برنامه.

@RunWith(AndroidJUnit4::class)
@LargeTest
class BaselineProfileGenerator {

    @get:Rule
    val rule = BaselineProfileRule()

    @Test
    fun generate() {
        rule.collect(
            packageName = "com.example.app",
            includeInStartupProfile = true
        ) {
            uiAutomator {
                // Launch directly into the NEWS_FEED using startActivityIntent
                startIntent(Intent().apply {
                    setPackage(packageName)
                    setAction("com.example.app.NEWS_FEED")
                })
            }
        }
    }
}

دستور Generate Baseline Profile را برای پیکربندی برنامه اجرا کنید و قوانین Startup Profile را در src/<variant>/generated/baselineProfiles/startup-prof.txt پیدا کنید.

ملاحظات مربوط به ایجاد پروفایل‌های استارتاپی

برای اینکه تصمیم بگیرید هنگام ایجاد یک پروفایل راه‌اندازی، کدام مسیرهای کاربر را پوشش دهید، در نظر بگیرید که اکثر کاربران برنامه را از کجا شروع می‌کنند. معمولاً این از لانچر و پس از ورود به سیستم است. این همچنین اساسی‌ترین مسیر پروفایل پایه است.

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

  1. فعالیت لانچر اصلی
  2. اعلان‌هایی که باعث شروع به کار برنامه می‌شوند
  3. فعالیت‌های پرتاب اختیاری

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

{% کلمه به کلمه %} {% فعل کمکی %} {% کلمه به کلمه %} {% فعل کمکی %}