Optimisation du code DEX

L'optimisation et l'obscurcissement de votre code à l'aide de R8 ou d'outils alternatifs (tels que des optimiseurs compatibles avec ProGuard ou des post-processeurs DEX secondaires) réduisent la taille DEX de votre application, améliorent les performances d'exécution et minimisent son empreinte mémoire.

Les fichiers DEX, ou Dalvik Executable, contiennent le code compilé utilisé pour exécuter votre application. Il s'agit généralement de code Java et Kotlin, par opposition au code C++ compilé ou aux fichiers .so.

Mesurer l'optimisation du code R8 en local

Pour mesurer la taille DEX non compressée de votre app bundle en local à l'aide de la ligne de commande, exécutez :

unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'

Si votre application est optimisée avec R8, vous pouvez mesurer l'optimisation, l'obscurcissement et la réduction de votre app bundle à l'aide de l'analyseur de configuration R8. Pour obtenir des définitions détaillées de la minification, de l'optimisation et de l'obscurcissement, consultez Utiliser l'outil d'analyse de la configuration R8. Le rapport de l'analyseur de configuration R8 est également inclus dans la compétence d'analyse R8.

Pour inspecter les métadonnées post-optimisation intégrées à votre app bundle (pour AGP version 8.10 ou ultérieure), extrayez le fichier r8.json :

unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json

Résoudre le problème

Pour résoudre les problèmes de faible score d'optimisation du code DEX, consultez les recommandations en fonction de votre système de compilation et de votre optimiseur :

Plug-in Android Gradle et R8

Pour améliorer vos scores d'optimisation du code DEX R8, consultez les conseils de la section Améliorer l'optimisation R8. Vous pouvez également utiliser la compétence R8 Analyzer pour obtenir des conseils supplémentaires sur l'optimisation des règles de conservation de votre application.

Systèmes de compilation et post-processeurs DEX non-R8

Si votre pipeline de compilation utilise des outils de compilation personnalisés ou des post-processeurs DEX secondaires, suivez les étapes ci-dessous pour améliorer l'optimisation de votre application :

  • Ouvrez votre app bundle dans Android Studio et affichez-le dans l'analyseur d'APK.
  • Sélectionnez tous les fichiers .dex.
  • Faites particulièrement attention aux fichiers les plus volumineux lorsque vous activez le bouton "Désobscurcir les noms" (remarque : vous devez importer un fichier mapping.txt). Si vous constatez que certains de ces fichiers restent volumineux après l'obscurcissement, il est probable qu'ils soient concernés par des règles de conservation à l'échelle du package.
  • Consultez votre fichier proguard-rules.pro, configuration.txt ou l'équivalent pour votre optimiseur si vous n'utilisez pas R8, et recherchez les règles de conservation qui correspondent aux packages qui ne sont pas obscurcis. Par exemple, si com.foo. est un package volumineux dans votre fichier dex, recherchez les règles de conservation au format -keep com.foo.** ou -keep com.foo.bar.**.
  • Gardez à l'esprit que les règles de conservation des consommateurs de bibliothèque ne sont pas toujours faciles à identifier. Si vous pensez qu'une règle de consommateur de bibliothèque a un impact sur l'optimisation, vous pouvez la valider localement en l'ajoutant à une application exemple autonome à l'aide d'une version récente d'AGP, puis en l'inspectant avec l'analyseur de configuration R8.