当我得到这样的东西

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

我怎么知道问题在哪里并调试这个问题?我只从proguard那里获得了映射输出,并且不知道行号。谢谢。

有帮助吗?

解决方案

将以下几行添加到您的Proguard配置中。

-renamesourcefileattribute SourceFile    
-keepattributes SourceFile,LineNumberTable

现在,您的堆栈轨迹将包括线号,并使用带有Proguard的回曲工具(包括在Android SDK中),您可以像正常情况一样调试。

请注意,即使您不使用这两个配置选项,但ReTrace仍然可以输出有用的信息,只要您拥有映射文件,尽管并非完全明确。

注意:带有映射的文件由Proguard配置选项产生:

 -printmapping outputfile.txt

在使用Android SDK运送的ANT文件中,将其设置为映射.txt。

祝你好运。

其他提示

为了利用您的Android市场帐户中的任何堆栈跟踪-printmapping 选项在Proguard配置中,并带有reatrace(Proguard Companion Tool)来解码堆栈跟踪。您也可以使用地图文件的内容手工解码,但这很乏味。

在示例中的Proguard手册中,有一个部分关于产生有用的混淆堆栈痕迹,包括如何保持线路数。

不幸的是,如果您没有设置前进以保留行号,那么您将只能识别出抛出异常的方法。

将您的堆栈跟踪粘贴在stack_trace.txt中

运行以下命令:java -jar retrace.jar class -processed.map stack_trace.txt

retace.jar在sdk tools proguard lib retace.jar class.processed.map是proguard生成的输出文件时

这是Android SDK的Retrace Tool的官方文档的链接: https://developer.android.com/studio/build/shrink-code#decode-stack-trace

本文也很好: https://medium.com/@maheshwar.ligade/de-obfuscate-stack-traces-6e19a52a3379

对于所有复制式兄弟:

retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top