Vous pouvez vérifier que vos profils de démarrage fonctionnent à l'aide d'Android Studio ou en examinant les métadonnées de compilation R8.
Confirmer avec Android Studio
Pour confirmer l'optimisation de la mise en page DEX, utilisez Android Studio pour ouvrir l'APK et vérifier les classes dans les fichiers DEX. Assurez-vous que le classes.dex principal n'est pas complètement rempli. Si votre application se compose d'un seul fichier DEX, vous pouvez vérifier si elle contient deux fichiers DEX après avoir activé le profil de démarrage.
Android Studio vous avertit si les classes de démarrage ne tiennent pas dans un seul fichier DEX.
Pour obtenir des informations de diagnostic incluant le nombre de méthodes de non-démarrage dans les classes de démarrage, assurez-vous que le compilateur R8 est mis à jour au moins vers la version 8.3.21 en apportant les modifications suivantes au fichier settings.gradle lorsque vous appliquez le profil de démarrage :
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" } } }
Assurez-vous d'ajouter --info après assembleRelease dans la commande suivante lorsque vous compilez avec Gradle.
./gradlew assembleRelease --info
Le diagnostic est ensuite imprimé dans le terminal.
Si votre application ou l'une de ses bibliothèques fait référence à des API désucrées, les implémentations de compatibilité groupées de ces classes sont toujours contenues dans le dernier fichier DEX. Ce dernier fichier DEX désucré ne participe pas aux optimisations de mise en page DEX.
Confirmer avec les métadonnées du bundle
À partir d'AGP 8.8, R8 génère des métadonnées dans votre Android App Bundle (AAB) que vous pouvez utiliser pour vérifier si l'optimisation de la mise en page DEX a réussi. Pour vérifier si l'optimisation a fonctionné :
Créez l'AAB de votre application :
./gradlew app:bundleReleaseVérifiez qu'au moins un fichier DEX contient le texte
"startup": true.Ouvrez les métadonnées :
unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.jsonLe chemin d'accès à votre AAB peut ressembler à
app/build/outputs/bundle/release/app-release.aab.Vérifiez le résultat, qui devrait ressembler à ceci :
inflating: r8.json [ { "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951", "startup": true } ]
Si vous ne voyez que
"startup": falsedans les métadonnées, vous devez activer les profils de démarrage et vous assurer que votre profil de démarrage n'est pas obscurci.Vérifiez que les valeurs SHA-256 des métadonnées correspondent à celles de l'AAB. Pour obtenir les valeurs SHA-256 de tous vos fichiers DEX, exécutez la commande suivante :
unzip -o path-to-aab */dex/*.dex && sha256sum */dex/*Le résultat devrait ressembler à ceci :
Archive: app/build/outputs/bundle/release/myapp-release.aab inflating: base/dex/classes.dex f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951 base/dex/classes.dexComparez les valeurs de hachage aux valeurs de "somme de contrôle" de l'étape 1. Si les valeurs SHA-256 ne correspondent pas, il est possible qu'une étape de compilation empêche R8 de générer des fichiers DEX.