Quand j'ai quelque chose comme ça
ERROR/AndroidRuntime(18677): Caused by: Java.lang.NullPointerException
ERROR/AndroidRuntime(18677): at com.companyname.a.a.a(Unknown Source)
Comment puis-je savoir où est le problème et déboguer ce problème? Je n'ai obtenu la sortie de mappage que de ProGuard et je ne connais pas le numéro de ligne. Merci.
Ajoutez les lignes suivantes à votre configuration proguard.
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
Maintenant, vos traces de pile incluront des numéros de ligne, et en utilisant l'outil de retrace livré avec proguard (inclus dans le SDK Android), vous pouvez déboguer comme d'habitude.
Notez que même si vous n'avez pas utilisé ces deux options de configuration, retrace peut toujours générer des informations utiles à condition que vous ayez le fichier de mappage, bien que ce ne soit pas totalement sans ambiguïté.
Remarque: le fichier avec les mappages est produit par l'option de configuration proguard:
-printmapping outputfile.txt
Dans le fichier ant fourni avec le SDK Android SDK, il est défini sur mapping.txt.
Bonne chance.
Pour utiliser les traces de pile de votre compte Android Market, vous pouvez utiliser votre fichier de carte, produit avec le-printmapping
option dans la configuration ProGuard, avec ReTrace (outil compagnon ProGuard) pour décoder la trace de la pile. Vous pouvez également décoder à la main en utilisant le contenu du fichier de carte, mais cela est fastidieux.
Dans le manuel ProGuard sous les exemples, il y a une section sur la production de traces de pile obscurcies utiles, y compris comment conserver les numéros de ligne.
Malheureusement, si vous n'avez pas configuré ProGuard pour conserver les numéros de ligne, vous ne pourrez qu'identifier la méthode qui lève l'exception.
Collez votre trace de pile dans stack_trace.txt
Exécutez la commande suivante: Java -jar retrace.jar classes-processed.map stack_trace.txt
retrace.jar se trouve dans sdk\tools\proguard\lib\retrace.jar classes-processed.map est le fichier de sortie généré par proguard lorsque vous avez masqué
Voici un lien vers la documentation officielle sur l'outil de retrace de Android SDK: https://developer.Android.com/studio/build/shrink-code#decode-stack-trace
Cet article est bon aussi: https://medium.com/@maheshwar.ligade/de-obfuscate-stack-traces-6e19a52a3379
Pour tout ce que vous copiez-collez bros:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]