当我是这样的如何在Android上进行混淆调试(使用ProGuard)应用程序?
ERROR/AndroidRuntime(18677): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(18677): at com.companyname.a.a.a(Unknown Source)
我怎么能知道问题的所在和调试这个问题? 我只有ProGuard的映射输出,并且不知道行号。 谢谢。
当我是这样的如何在Android上进行混淆调试(使用ProGuard)应用程序?
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),您可以像调试正常。
请注意,即使您没有使用这两个配置选项,回溯仍然可以输出有用的信息,只要您有映射文件,尽管不是完全明确。
注:与映射文件被ProGuard的配置选项生成:
-printmapping outputfile.txt
在随Android SDK的Ant文件,它被设置为的mapping.txt。
祝你好运。
要使用Android Market帐户中的任何堆栈跟踪,可以使用ProGuard配置中-printmapping
选项生成的地图文件与ReTrace(ProGuard配套工具)解码堆栈跟踪。您也可以使用地图文件的内容手工解码,但这很枯燥。
在ProGuard手册的示例中,有一节介绍如何生成有用的混淆堆栈轨迹,包括如何保留行号。
不幸的是,如果您没有设置ProGuard来保留行号,那么您将只能识别抛出异常的方法。
在stack_trace.txt
运行以下命令粘贴您的堆栈跟踪:Java的罐子retrace.jar classes-processed.map stack_trace.txt
retrace.jar是在SDK \工具\ proguard的\ LIB \ retrace.jar classes-processed.map是,当你做了模糊处理
这个过程也在http://developer.android.com/guide/developing/tools/proguard.html所解释的ProGuard生成的输出文件#decoding – 2011-03-17 10:21:33
进入ADT 17(目前是预览版)是对PorGuard为Androi配置的进一步改变d。 http://tools.android.com/recent/proguardimprovements它不会更改如何使用打印映射进行调试,但它会改变最初配置ProGuard的方式。 – cistearns 2012-03-04 19:56:24
@cistearns我试过一样,但出来的是相同的编码值:(任何帮助? – 2014-01-10 04:56:37