יצירת פרופילים לסטארט-אפ

כאן אפשר לקרוא על הדרישות, השלבים ליצירת פרופילים ושיטות מומלצות. keywords_public: Startup Profiles, Baseline Profiles, app performance, APK optimization, DEX layout, Android Studio, Jetpack Macrobenchmark

פרופילים להפעלה הם קבוצת משנה של פרופילים של Baseline. פרופילים של הפעלה משמשים את מערכת ה-Build כדי לבצע אופטימיזציה נוספת של המחלקות והשיטות שהם מכילים, על ידי שיפור הפריסה של הקוד בקובצי ה-DEX של ה-APK. עם פרופילים להפעלה, ההפעלה של האפליקציה בדרך כלל מהירה ב-15% עד 30% מאשר עם פרופילים של Baseline בלבד.

מידע נוסף זמין במאמר סקירה כללית על פרופילים של סטארטאפים.

דרישות

מומלץ להשתמש בפרופילים להפעלה עם הכלים הבאים:

  • ‫Jetpack Macrobenchmark מגרסה 1.2.0 ואילך
  • ‫Android Gradle Plugin‏ (AGP) מגרסה 8.2 ואילך
  • ‫Android Studio Iguana או גרסה מתקדמת יותר

בנוסף, צריך להגדיר את ההגדרות הבאות באפליקציה:

  • R8 מופעל. בגרסת ה-build של ההפצה, מגדירים את isMinifyEnabled = true.
  • אופטימיזציות של פריסת DEX מופעלות. האפשרות הזו זמינה רק החל מ-AGP 8.1, והיא מופעלת כברירת מחדל החל מ-AGP 8.3. בגרסאות AGP 8.1 עד 8.2, בחלק baselineProfile {} של קובץ ה-build של מודול האפליקציה, מגדירים את dexLayoutOptimization = true.

יצירת פרופיל סטארט-אפ

כשמשתמשים בתבנית ברירת המחדל של Baseline Profile Generator,‏ Android Studio יוצר פרופיל הפעלה לצד פרופיל Baseline.

השלבים הכלליים ליצירה של פרופיל הפעלה זהים לשלבים של יצירת פרופיל Baseline.

דרך ברירת המחדל ליצור פרופיל הפעלה היא באמצעות תבנית המודול Baseline Profile Generator מתוך Android Studio. זה כולל אינטראקציות של הפעלת האפליקציה שיוצרות פרופיל הפעלה בסיסי. כדי להוסיף עוד מסלולי משתמש קריטיים (CUJ) לפרופיל ההפעלה הזה, מוסיפים את מסלולי המשתמש הקריטיים להפעלת האפליקציה לבלוק rule עם הערך true של includeInStartupProfile. באפליקציות פשוטות, יכול להיות שיהיה מספיק להפעיל את 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 ומחפשים את כללי פרופיל ההפעלה ב-src/<variant>/generated/baselineProfiles/startup-prof.txt, שם הם נצרכים באופן אוטומטי על ידי AGP.

שיקולים ליצירת פרופילים להפעלה

כדי להחליט אילו מסלולים להמרת משתמשים לכלול כשיוצרים פרופיל של אפליקציית סטארט-אפ, כדאי לחשוב איפה רוב המשתמשים מתחילים את השימוש באפליקציה. בדרך כלל זה קורה ממפעיל האפליקציות ואחרי שהם נכנסו לחשבון. זה גם המסלול הבסיסי ביותר של פרופיל Baseline.

אחרי שמכסים את תרחיש השימוש הראשון, עוקבים אחרי משפך המשתמשים להפעלת האפליקציה. במקרים רבים, משפכי ההמרה של הפעלת האפליקציה הם לפי הרשימה הבאה:

  1. הפעילות הראשית במרכז האפליקציות
  2. התראות שמפעילות את האפליקציה
  3. פעילויות אופציונליות של מרכז האפליקציות

כדאי להתחיל מהפריט הראשון ברשימה ולהפסיק לפני שהמכסה של classes.dex תתמלא. כדי לכלול יותר מסלולי המרה בהמשך, מעבירים את הקוד מנתיב ההפעלה ומוסיפים עוד מסלולי המרה. כדי להוציא קוד מנתיב ההפעלה, בודקים את עקבות Perfetto במהלך הפעלת האפליקציה ומחפשים פעולות ממושכות. אפשר גם להשתמש במדד מאקרו עם מעקב אחר שיטות מופעל כדי לקבל תצוגה מלאה של קריאות לשיטות במהלך הפעלת האפליקציה, שאפשר להפוך לאוטומטית.