כדי לוודא שפרופילי ההפעלה פועלים, אפשר להשתמש ב-Android Studio או לבדוק את המטא-נתונים של R8 build.
אישור באמצעות Android Studio
כדי לוודא שהפריסה של DEX עברה אופטימיזציה, משתמשים ב-Android Studio כדי לפתוח את ה-APK ולבדוק את המחלקות בקובצי ה-DEX. מוודאים שהמיכל הראשי classes.dex לא מלא עד הסוף. אם האפליקציה שלכם מורכבת מקובץ DEX יחיד, תוכלו לבדוק אם האפליקציה מכילה שני קובצי DEX אחרי הפעלת פרופיל ההפעלה.
אם מחלקות ההפעלה לא נכנסות לקובץ DEX אחד, מוצגת אזהרה ב-Android Studio.
כדי לקבל מידע אבחוני שכולל את מספר השיטות שאינן שיטות הפעלה במחלקות ההפעלה, צריך לוודא שהקומפיילר R8 מעודכן לגרסה 8.3.21 לפחות. לשם כך, מבצעים את השינויים הבאים בקובץ 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.21") } } }
מגניב
pluginManagement { buildscript { repositories { mavenCentral() maven { url uri('https://storage.googleapis.com/r8-releases/raw') } } dependencies { classpath 'com.android.tools:r8:8.3.6-dev" } } }
כשמבצעים build באמצעות Gradle, מוסיפים את --info אחרי assembleRelease בפקודה הבאה.
./gradlew assembleRelease --info
לאחר מכן, האבחון מודפס במסוף.
אם האפליקציה או ספריות כלשהן מפנות אל ממשקי API שעברו desugaring, הטמעות התאימות שצורפו של המחלקות האלה תמיד ייכללו בקובץ ה-DEX האחרון. קובץ ה-DEX האחרון הזה אחרי הסרת הסוכר לא משתתף באופטימיזציות של פריסת ה-DEX.
אישור באמצעות מטא-נתונים של חבילה
החל מ-AGP 8.8, R8 מוציא מטא-נתונים ב-Android App Bundle (AAB) שאפשר להשתמש בהם כדי לבדוק אם האופטימיזציה של פריסת ה-DEX הצליחה. כדי לבדוק אם האופטימיזציה פעלה:
יוצרים את קובץ ה-AAB של האפליקציה:
./gradlew app:bundleReleaseבודקים שיש לפחות קובץ DEX אחד שמכיל את הטקסט
"startup": true.פותחים את המטא-נתונים:
unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.jsonהנתיב לקובץ ה-AAB יכול להיות משהו כמו
app/build/outputs/bundle/release/app-release.aab.בודקים את הפלט, שאמור להיראות כך:
inflating: r8.json [ { "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951", "startup": true } ]
אם רואים רק
"startup": falseבמטא-נתונים, צריך להפעיל פרופילים להפעלה ולוודא שהפרופיל להפעלה לא מוצפן.בודקים אם ערכי ה-SHA-256 מהמטא-נתונים תואמים לערכים מקובץ ה-AAB. כדי לקבל את ערכי ה-SHA-256 של כל קובצי ה-DEX, מריצים את הפקודה הבאה:
unzip -o path-to-aab */dex/*.dex && sha256sum */dex/*הפלט אמור להיראות כך:
Archive: app/build/outputs/bundle/release/myapp-release.aab inflating: base/dex/classes.dex f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951 base/dex/classes.dexמשווים את ערכי הגיבוב לערכי ה-checksum משלב 1. אם ערכי ה-SHA-256 לא זהים, יכול להיות שיש שלב קומפילציה שמפריע ליכולת של R8 להפיק קובצי DEX.