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

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

איור 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 תבנית מודול של גנרטור מתוך Android Studio. זה כולל הפעלה האינטראקציות שיוצרות פרופיל סטארט-אפ בסיסי. כדי להרחיב את פרופיל הסטארט-אפ הזה עם עוד תהליכי משתמש קריטיים (CUJ), אפשר להוסיף את CUJs של אתחול האפליקציה ל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
        ) {
            // 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

אישור אופטימיזציה של פרופילים בהפעלה

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

ב-Android Studio מוצגת אזהרה אם מחלקות ההפעלה לא מתאימות לקובץ DEX אחד. כדי לקבל מידע אבחון שכולל את כמות שיטות ההפעלה שאינן את מחלקות ההפעלה, ודא שהמהדר של R8 מעודכן לגרסה לפחות 8.3.36-dev על ידי ביצוע השינויים הבאים בקובץ settings.gradle כאשר מחילים את פרופיל ההפעלה:

Kotlin

pluginManagement {
    buildscript {
        repositories {
            mavenCentral()
            maven {
                url = uri("https://storage.googleapis.com/r8-releases/raw")
            }
        }
        dependencies {
            classpath("com.android.tools:r8:8.3.6-dev")
        }
    }
}

מגניב

pluginManagement {
    buildscript {
        repositories {
            mavenCentral()
            maven {
                url uri('https://storage.googleapis.com/r8-releases/raw')
            }
        }
        dependencies {
            classpath 'com.android.tools:r8:8.3.6-dev"
        }
    }
}

צריך להקפיד להוסיף את --info אחרי assembleRelease בפקודה הבאה כשבונים באמצעות Gradle.

./gradlew assembleRelease --info

לאחר מכן, האבחון יודפס בטרמינל.

אם האפליקציה או ספריות כלשהן מפנות לממשקי API ללא סוכר, תאימות של המחלקות האלה תמיד כלולות קובץ DEX. קובץ ה-DEX האחרון ללא שומן לא משתתף בפריסת DEX ואופטימיזציות.