如何在Android上调试模糊(带有ProGuard)应用程序?
当我得到这样的东西时如何在Android上调试模糊(带有ProGuard)应用程序?,android,debugging,obfuscation,proguard,Android,Debugging,Obfuscation,Proguard,当我得到这样的东西时 ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException ERROR/AndroidRuntime(18677): at com.companyname.a.a.a(Unknown Source) 如何知道问题所在并调试此问题? 我只从ProGuard获得映射输出,不知道行号。 谢谢。要使用Android Market帐户中的任何堆栈跟踪,您可以使用ProGuard配置中的-pri
ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(18677): at com.companyname.a.a.a(Unknown Source)
如何知道问题所在并调试此问题?
我只从ProGuard获得映射输出,不知道行号。
谢谢。要使用Android Market帐户中的任何堆栈跟踪,您可以使用ProGuard配置中的
-printmapping
选项生成的地图文件,并使用ReTrace(ProGuard companion tool)解码堆栈跟踪。您也可以使用地图文件的内容手动解码,但这很繁琐
在ProGuard手册的“示例”下,有一节介绍如何生成有用的模糊堆栈跟踪,包括如何保留行号
不幸的是,如果没有将ProGuard设置为保留行号,则只能识别引发异常的方法。将以下行添加到ProGuard配置中
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable
现在,堆栈跟踪将包括行号,通过使用proguard附带的回溯工具(包括在Android SDK中),您可以像正常情况一样进行调试
请注意,即使您没有使用这两个配置选项,只要您有映射文件,回溯仍然可以输出有用的信息,尽管不是完全明确的
注意:带有映射的文件由proguard配置选项生成:
-printmapping outputfile.txt
在Android SDK附带的ant文件中,它被设置为mapping.txt
祝你好运。将堆栈跟踪粘贴到stack_trace.txt中 运行以下命令:java-jar retrace.jar classes-processed.map stack\u trace.txt retrace.jar位于sdk\tools\proguard\lib\retrace.jar
classes-processed.map是proguard在您进行模糊处理时生成的输出文件这里有一个链接,指向Android SDK中有关回溯工具的官方文档: 这篇文章也很好: 对于所有复制粘贴兄弟:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
retrace.bat | retrace.sh[-verbose]mapping.txt[]
要回溯模糊的ProGuard文件,请执行以下步骤:
/Users/{name}/Library/Android/sdk/tools/proguard/bin/proguardgui.sh
你可以通过终端运行它ADT 17(目前是预览版)中也解释了这一过程,这是对PorGuard在Android上配置方式的进一步更改。它不会更改使用打印映射进行调试的方式,但会更改您最初配置ProGuard的方式。@cistearns我尝试了相同的方法,但结果与编码值相同:(有什么帮助吗?我不知道如何使用它。你能提供更多信息吗?甚至可以调试模糊的应用程序吗?这只适用于我在活动中的情况,但不会命中片段中的断点。你知道为什么会发生吗?)