פרופילי סטארט-אפ הם קבוצת משנה של פרופילים בסיסיים. פרופילי הפעלה משמשים את את מערכת ה-build כדי לבצע אופטימיזציה נוספת של המחלקות והשיטות שהן כוללות שיפור פריסת הקוד בקובצי ה-DEX של ה-APK. עם פרופילים של חברות סטארט-אפ, ההפעלה של האפליקציה מהירה יותר בשיעור של עד 15% בהשוואה לשימוש בפרופילים בסיסיים בלבד.
![](https://developer.android.com/static/topic/performance/images/dex-layout-optimizations.png?authuser=9&hl=he)
הדרישות
אנחנו ממליצים להשתמש בפרופילים של סטארט-אפים בעזרת הכלים הבאים:
- 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 ואופטימיזציות.
מומלץ עבורך
- הערה: טקסט הקישור מוצג כאשר JavaScript מושבת
- יצירת פרופילים בסיסיים {:#Creating-profile-כללים}
- פרופילים בסיסיים {:#baseline-profile}
- כתיבת נתוני מיקרובנצ'מרק