«نمایههای راهاندازی» زیرمجموعهای از «نمایههای مبنا» هستند. سیستم ساخت از «نمایههای راهاندازی» برای بهینهسازی بیشتر کلاسها و روشهای موجود در آنها استفاده میکند. این کار با بهبود چیدمان کد در فایلهای DEX فایل APK شما انجام میشود. با Startup Profiles، راهاندازی برنامه شما معمولاً بین ۱۵٪ تا ۳۰٪ سریعتر از زمانی است که فقط از Baseline Profiles استفاده میکنید.
برای اطلاعات بیشتر، به نمای کلی نمایههای راهاندازی مراجعه کنید.
الزامات
توصیه میکنیم از «نمایههای راهاندازی» با ابزارهای زیر استفاده کنید:
- Jetpack Macrobenchmark نسخه ۱.۲.۰ یا بالاتر
- افزایه Android Gradle (AGP) نسخه ۸.۲ یا بالاتر
- Android Studio Iguana یا بالاتر
علاوهبراین، به تنظیمات زیر در برنامهتان نیاز دارید:
- R8 فعال شد. برای ساخت نسخهٔ پخش،
isMinifyEnabled = trueرا تنظیم کنید. - بهینهسازیهای چیدمان DEX فعال شد. این ویژگی فقط از AGP نسخه ۸.۱ به بعد دردسترس است و از AGP نسخه ۸.۳ بهطور پیشفرض فعال است. برای AGP نسخههای ۸.۱ تا ۸.۲،
در بلوک
baselineProfile {}فایل ساخت واحد برنامه،dexLayoutOptimization = trueرا تنظیم کنید.
ایجاد نمایه استارتاپ
وقتی از الگوی پیشفرض «تولیدکننده نمایه مبنا» استفاده میکنید، Android Studio یک «نمایه راهاندازی» در کنار «نمایه مبنا» ایجاد میکند.
مراحل کلی برای ایجاد و تولید «نمایه راهاندازی» همانند مراحل ایجاد «نمایه پایه» است.
روش پیشفرض برای ایجاد «نمایه راهاندازی» استفاده از الگوی پیمانه «تولیدکننده نمایه پایه» از داخل Android Studio است. این شامل تعاملات استارتاپ است که «نمایه استارتاپ» پایه را تشکیل میدهد. برای تقویت این Startup Profile
با «مسیرهای قطعی کاربر» (CUJ) بیشتر، CUJهای راهاندازی برنامهتان را به بلوک rule
با includeInStartupProfile تنظیمشده روی true اضافه کنید. برای برنامههای ساده، راهاندازی
MainActivity برنامه ممکن است کافی باشد. برای برنامههای پیچیدهتر،
افزودن رایجترین نقاط ورودی به برنامهتان را درنظر بگیرید، مثلاً شروع برنامه از
صفحه اصلی یا راهاندازی در پیوند عمیق.
تکهکد زیر یک تولیدکننده Baseline Profile (بهطور پیشفرض فایل 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")
})
}
}
}
پیکربندی تولید نمایه پایه برای برنامه را اجرا کنید و
قوانین «نمایه راهاندازی» را در
src/<variant>/generated/baselineProfiles/startup-prof.txt پیدا کنید، جایی که
بهطور خودکار توسط AGP مصرف میشوند.
ملاحظات ایجاد نمایه استارتاپ
برای تصمیمگیری درباره اینکه کدام مسیرهای کاربر را هنگام ایجاد نمایه راهاندازی پوشش دهید، درنظر بگیرید که اکثر کاربران برنامه را از کجا شروع میکنند. معمولاً این کار از راهانداز و پساز ورود به سیستم انجام میشود. این همچنین ابتداییترین سفر نمایه مبنا است.
پساز پوشش دادن اولین مورد استفاده، قیف کاربر را برای راهاندازی برنامه دنبال کنید. در بسیاریاز موارد، قیفهای راهاندازی برنامه از این فهرست پیروی میکنند:
- فعالیت راهانداز اصلی
- اعلانهایی که راهاندازی برنامه را راهاندازی میکنند
- فعالیتهای اختیاری راهانداز
این فهرست را از بالا شروع کنید و قبلاز پر شدن classes.dex متوقف شوید. برای پوشش دادن سفرهای بیشتر در آینده، کد را از مسیر راهاندازی خارج کنید و سفرهای بیشتری اضافه کنید. برای
خارج کردن کد از مسیر راهاندازی، ردگیریهای Perfetto را درطول راهاندازی برنامه بررسی کنید
و بهدنبال عملیاتهای طولانیمدت بگردید. همچنین میتوانید از macrobenchmark
با ردیابی روش فعال برای نمای قابل خودکارسازی و کامل از فراخوانیهای روش
درطول راهاندازی برنامه استفاده کنید.
توصیهشده برای شما
- توجه: وقتی جاوا اسکریپت خاموش باشد، نوشتار پیوند نمایش داده میشود
- ایجاد «نمایههای مبنا» {:#creating-profile-rules}
- نمایههای مبنا {:#baseline-profiles}
- نوشتن Microbenchmark