Comment déboguer avec des applications obscurcies (avec ProGuard) sur Android?

Quand j’ai eu quelque chose comme ça

ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException ERROR/AndroidRuntime(18677): at com.companyname.aaa(Unknown Source) 

Comment puis-je savoir où est le problème et déboguer ce problème? Je n’ai obtenu que la sortie cartographique de ProGuard et je ne connais pas le numéro de ligne. Merci.

Ajoutez les lignes suivantes à votre configuration proguard.

 -renamesourcefileatsortingbute SourceFile -keepatsortingbutes SourceFile,LineNumberTable 

Maintenant, vos traces de stack incluront des numéros de ligne, et en utilisant l’outil de suivi fourni avec proguard (inclus dans le SDK Android), vous pouvez déboguer normalement.

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 disposiez du fichier de mappages, même si ce n’est 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, il est défini sur mapping.txt.

Bonne chance.

Pour utiliser les traces de stack de votre compte Android Market, vous pouvez utiliser votre fichier de carte, créé avec l’option -printmapping de la configuration ProGuard, avec ReTrace (outil associé ProGuard) pour décoder la trace de la stack. Vous pouvez également décoder à la main en utilisant le contenu du fichier de carte, mais cela est fastidieux.

Dans le manuel ProGuard dans des exemples, il y a une section sur la production de traces de stack obfusquées 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 identifier que la méthode qui génère l’exception.

Collez votre trace de stack dans stack_trace.txt

Exécutez la commande suivante: java -jar retrace.jar classes-processed.map stack_trace.txt

retrace.jar est sur sdk \ tools \ proguard \ lib \ retrace.jar classes-processed.map est le fichier de sortie généré par proguard lorsque vous avez fait l’obscurcissement