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

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

איור 1. שיפור המקומיות של הקוד מאופטימיזציה של פריסת DEX.

דרישות

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

  • ‫Jetpack Macrobenchmark מגרסה 1.2.0 ואילך
  • פלאגין Android Gradle מגרסה 8.2 ואילך
  • ‫Android Studio Iguana או גרסה מתקדמת יותר

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

  • R8 מופעל. בגרסת ה-build להפצה, מגדירים את הערך isMinifyEnabled = true.
  • האפשרות 'אופטימיזציות של פריסת DEX' מופעלת. בבלוק baselineProfile {} של קובץ ה-build של מודול האפליקציה, מגדירים את dexLayoutOptimization = true.

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

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

השלבים הכלליים ליצירה של פרופיל סטארטאפ זהים לאלה של יצירת פרופיל בסיסי.

דרך ברירת המחדל ליצירת פרופיל הפעלה היא באמצעות תבנית המודול Baseline Profile Generator מתוך Android Studio. זה כולל אינטראקציות עם סטארטאפים שיוצרות פרופיל סטארטאפ בסיסי. כדי להוסיף עוד מסלולי משתמש קריטיים (CUJ) לפרופיל הסטארט-אפ הזה, מוסיפים את מסלולי המשתמש הקריטיים של אפליקציית הסטארט-אפ לבלוק rule עם הערך true של המאפיין includeInStartupProfile. באפליקציות פשוטות, יכול להיות שיהיה מספיק להפעיל את MainActivity של האפליקציה. באפליקציות מורכבות יותר, כדאי להוסיף את נקודות הכניסה הנפוצות ביותר לאפליקציה, כמו הפעלת האפליקציה ממסך הבית או הפעלה של קישור עומק.

קטע הקוד הבא מציג מחולל של פרופיל בסיסי (כברירת מחדל, הקובץ BaselineProfileGenerator.kt) שכולל הפעלה של האפליקציה ממסך הבית והפעלת קישור עמוק. קישור העומק מוביל ישירות לפיד החדשות של האפליקציה, ולא למסך הבית של האפליקציה.

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

    @get:Rule
    val rule = BaselineProfileRule()

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

מריצים את ההגדרה Generate Baseline Profile for app ומחפשים את כללי פרופיל ההפעלה בנתיב src/<variant>/generated/baselineProfiles/startup-prof.txt.

שיקולים ליצירת פרופילים של סטארטאפים

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

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

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

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