פרופילים של הפעלה הם קבוצת משנה של פרופילים של Baseline. מערכת ה-Build משתמשת בפרופילים של הפעלה כדי לבצע אופטימיזציה נוספת של המחלקות והשיטות שהם מכילים, על ידי שיפור הפריסה של הקוד בקובצי ה-DEX של ה-APK. בעזרת פרופילים של הפעלה, ההפעלה של האפליקציה מהירה בדרך כלל ב-15% עד 30% בהשוואה לשימוש בפרופילים של Baseline בלבד.
מידע נוסף זמין במאמר סקירה כללית על פרופילים של סטארטאפים.
דרישות
מומלץ להשתמש בפרופילים להפעלה עם הכלים הבאים:
- Jetpack Macrobenchmark מגרסה 1.2.0 ואילך
- פלאגין של Android Gradle (AGP) מגרסה 8.2 ואילך
- Android Studio Iguana או גרסה מתקדמת יותר
בנוסף, צריך להגדיר את ההגדרות הבאות באפליקציה:
- R8 מופעל. בגרסת ה-build להפצה, מגדירים את
isMinifyEnabled = true. - אופטימיזציות של פריסת DEX מופעלות. האפשרות הזו זמינה רק החל מ-AGP
8.1, ומופעלת כברירת מחדל החל מ-AGP 8.3. בגרסאות AGP 8.1 עד 8.2, צריך להגדיר את
dexLayoutOptimization = trueבבלוקbaselineProfile {}של קובץ ה-build של מודול האפליקציה.
יצירת פרופיל סטארט-אפ
כשמשתמשים בתבנית ברירת המחדל של Baseline Profile Generator, Android Studio יוצר פרופיל הפעלה לצד פרופיל Baseline.
השלבים הכלליים ליצירה של פרופיל הפעלה זהים לשלבים של יצירת פרופיל Baseline.
דרך ברירת המחדל ליצור פרופיל הפעלה היא באמצעות תבנית המודול Baseline Profile Generator מתוך Android Studio. התבנית הזו כוללת אינטראקציות הפעלה שיוצרות פרופיל הפעלה בסיסי. כדי להוסיף לפרופיל ההפעלה הזה עוד תרחישי שימוש קריטיים (CUJ), מוסיפים את תרחישי השימוש הקריטיים של הפעלת האפליקציה לבלוק rule עם הערך includeInStartupProfile שמוגדר ל-true. באפליקציות פשוטות, יכול להיות שמספיק להפעיל את MainActivity של האפליקציה. באפליקציות מורכבות יותר, כדאי להוסיף את נקודות הכניסה הנפוצות ביותר לאפליקציה, כמו הפעלת האפליקציה ממסך הבית או הפעלה של קישור עמוק.
בקטע הקוד הבא מוצג מחולל פרופילים של Baseline (כברירת מחדל, הקובץ 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 for app configuration ומחפשים את הכללים של פרופיל Baseline ב-src/<variant>/generated/baselineProfiles/startup-prof.txt, שם AGP משתמש בהם באופן אוטומטי.
שיקולים ליצירת פרופילים להפעלה
כדי להחליט אילו תהליכים שעוברים משתמשים כדאי לכלול כשיוצרים פרופיל של אפליקציית סטארט-אפ, צריך לחשוב איפה רוב המשתמשים מתחילים את השימוש באפליקציה. בדרך כלל זה קורה דרך מרכז האפליקציות ואחרי שהם מתחברים. זה גם התהליך הבסיסי ביותר של פרופיל ה-Baseline.
אחרי שמתייחסים לתרחיש השימוש הראשון, עוקבים אחרי משפך המשתמשים להפעלת האפליקציה. ברוב המקרים, משפכי הפעלת האפליקציה דומים לרשימה הבאה:
- הפעילות הראשית במרכז האפליקציות
- התראות שמפעילות את האפליקציה
- פעילויות אופציונליות של מרכז האפליקציות
כדאי לעבור על הרשימה הזו מלמעלה למטה ולהפסיק לפני ש-classes.dex מלא. כדי לכלול יותר מסלולי המרה בהמשך, צריך להוציא קוד מנתיב ההפעלה ולהוסיף עוד מסלולי המרה. כדי להוציא קוד מנתיב ההפעלה, בודקים את העקבות של Perfetto במהלך הפעלת האפליקציה ומחפשים פעולות שפועלות לאורך זמן. אפשר גם להשתמש במדד מאקרו עם מעקב שיטות מופעל כדי לקבל תצוגה מלאה של קריאות לשיטות במהלך הפעלת האפליקציה שאפשר להפוך לאוטומטית.
מומלץ בשבילך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- יצירת פרופיל Baseline {:#creating-profile-rules}
- פרופילים של Baseline {:#baseline-profiles}
- כתיבת Microbenchmark