Une fois l'optimisation de l'application activée, vérifiez qu'elle fonctionne comme prévu et que la configuration R8 fonctionne comme prévu. Les étapes générales sont les suivantes:
- Testez les critical user journeys (CUJ) de votre application : par exemple, assurez-vous que les utilisateurs peuvent se connecter et effectuer d'autres tâches importantes.
- Mesurez les gains de performances à l'aide d'analyses comparatives:effectuez des analyses comparatives de votre application avant et après avoir activé l'optimisation de l'application.
Si vous rencontrez des problèmes, R8 fournit des outils pour vous aider à les résoudre. Si vous ne parvenez pas à résoudre un problème avec R8, signalez un bug.
Conseils généraux
Les problèmes liés à R8 sont souvent propres à votre application, mais voici quelques conseils généraux pour faciliter le débogage:
- Désactiver temporairement l'obscurcissement:R8 obscurcit le code dans le cadre de son processus d'optimisation. L'obscurcissement n'est généralement pas à l'origine des erreurs, mais il rend le débogage des erreurs plus difficile. Ajoutez les indicateurs
‑dontobfuscate
et‑dontoptimize
au fichier de règles de conservation pour vous aider à identifier le code problématique. Vérifiez la réflexion:si vous rencontrez une exception Aucun élément de ce type, comme
Caused by: java.util.NoSuchElementException: Collection contains no element matching the predicate in the stack trace
,L'exception signifie généralement que le champ en question est utilisé via la réflexion et que vous devez ajouter une règle de conservation.
Inspectez le bytecode:la plupart des problèmes R8 nécessitent une inspection du bytecode, que vous pouvez effectuer à l'aide d'outils tels que l'analyseur d'APK.
Vérifier quelles règles sont appliquées
Pour générer un rapport complet de toutes les règles appliquées par R8 lors de la compilation de votre projet, incluez le code suivant dans le fichier proguard‑rules.pro
du module de votre application:
-printconfiguration <output-dir>/<report-name>.txt
Vous pouvez spécifier n'importe quel chemin d'accès et n'importe quel nom de fichier. Si vous ne spécifiez pas de chemin d'accès ni de nom de fichier, R8 génère le rapport sur les règles à l'emplacement <module-name>/build/outputs/mapping/<build-type>/configuration.txt
.
comprendre pourquoi le code a été conservé ;
Si vous voyez du code conservé que vous vous attendiez à supprimer, utilisez l'option de configuration ‑whyareyoukeeping
pour comprendre pourquoi le code a été conservé. R8 génère un chemin d'accès à partir du code conservé vers l'un des points d'entrée de votre application. Pour en savoir plus, consultez la documentation ‑whyareyoukeeping
dans le manuel ProGuard.
Récupérer la trace de pile d'origine
Le code traité par R8 est modifié de différentes manières afin que la trace de la pile ne fasse plus référence au code d'origine. Par exemple, les numéros de ligne et les noms des classes et des méthodes peuvent changer. Pour récupérer la trace de pile d'origine, R8 propose l'outil de ligne de commande retrace, qui fait partie du package d'outils de ligne de commande.
Pour utiliser la fonctionnalité de suivi, fournissez-lui un fichier de mappage et un fichier de trace de pile. Le fichier de mappage, appelé mapping.txt
, est automatiquement groupé avec votre Android App Bundle (AAB). Pour en savoir plus, consultez la documentation sur la retrace et l'article du centre d'aide de la Play Console sur la façon de désobscurcir les traces de la pile de plantage.