Sie können prüfen, ob Ihre Startprofile funktionieren, indem Sie entweder Android Studio verwenden oder sich die R8-Build-Metadaten ansehen.
Mit Android Studio bestätigen
Um die DEX-Layoutoptimierung zu bestätigen, öffnen Sie die APK mit Android Studio und prüfen Sie die Klassen in den DEX-Dateien. Achte darauf, dass die primäre classes.dex nicht vollständig gefüllt ist. Wenn Ihre App aus einer einzelnen DEX-Datei besteht, können Sie prüfen, ob die App nach dem Aktivieren des Startprofils zwei DEX-Dateien enthält.
Android Studio warnt Sie, wenn die Startklassen nicht in eine einzelne DEX-Datei passen.
Wenn Sie Diagnoseinformationen erhalten möchten, die die Anzahl der Methoden in den Startup-Klassen enthalten, die nicht zum Starten der App gehören, müssen Sie den R8-Compiler auf mindestens Version 8.3.21 aktualisieren. Nehmen Sie dazu die folgenden Änderungen an der Datei settings.gradle vor, wenn Sie das Startup-Profil anwenden:
Kotlin
pluginManagement { buildscript { repositories { mavenCentral() maven { url = uri("https://storage.googleapis.com/r8-releases/raw") } } dependencies { classpath("com.android.tools:r8:8.3.21") } } }
Groovy
pluginManagement { buildscript { repositories { mavenCentral() maven { url uri('https://storage.googleapis.com/r8-releases/raw') } } dependencies { classpath 'com.android.tools:r8:8.3.6-dev" } } }
Achten Sie darauf, dass Sie --info nach assembleRelease im folgenden Befehl hinzufügen, wenn Sie mit Gradle erstellen.
./gradlew assembleRelease --info
Die Diagnose wird dann im Terminal ausgegeben.
Wenn Ihre App oder Bibliotheken auf desugared APIs verweisen, sind die gebündelten Kompatibilitätsimplementierungen dieser Klassen immer in der letzten DEX-Datei enthalten. Diese entzuckerte letzte DEX-Datei wird nicht für die Optimierung des DEX-Layouts berücksichtigt.
Mit Bundle-Metadaten bestätigen
Ab AGP 8.8 gibt R8 Metadaten in Ihrem Android App Bundle (AAB) aus, mit denen Sie prüfen können, ob die DEX-Layoutoptimierung erfolgreich war. So prüfen Sie, ob die Optimierung funktioniert hat:
AAB für Ihre App erstellen:
./gradlew app:bundleReleasePrüfen Sie, ob es mindestens eine DEX-Datei gibt, die den Text
"startup": trueenthält.Metadaten öffnen:
unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.jsonDer Pfad zu Ihrem AAB könnte beispielsweise so aussehen:
app/build/outputs/bundle/release/app-release.aab.Prüfen Sie die Ausgabe, die in etwa so aussehen sollte:
inflating: r8.json [ { "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951", "startup": true } ]
Wenn in den Metadaten nur
"startup": falseangezeigt wird, müssen Sie Start-up-Profile aktivieren und darauf achten, dass Ihr Start-up-Profil nicht verschleiert ist.Prüfen Sie, ob die SHA‑256-Werte aus den Metadaten mit denen aus dem AAB übereinstimmen. So erhalten Sie die SHA‑256-Werte für alle Ihre DEX-Dateien:
unzip -o path-to-aab */dex/*.dex && sha256sum */dex/*Die Ausgabe sollte in etwa so aussehen:
Archive: app/build/outputs/bundle/release/myapp-release.aab inflating: base/dex/classes.dex f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951 base/dex/classes.dexVergleichen Sie die Hashwerte mit den Prüfsummenwerten aus Schritt 1. Wenn die SHA‑256-Werte nicht übereinstimmen, kann es sein, dass ein Kompilierungsschritt die Fähigkeit von R8 beeinträchtigt, DEX-Dateien auszugeben.