如何在Android上debugging混淆(使用ProGuard)应用程序?

当我有这样的事情

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

我怎么知道问题出在哪里并且debugging这个问题? 我只有ProGuard的映射输出,不知道行号。 谢谢。

  • Android Studio proguard处理多库项目
  • 如何检查/升级Proguard版本在Eclipse中使用它进行Android开发?
  • 在PROGUARD中添加库项目中添加的jar文件path
  • 在Eclipse中使用Proguard for Android得到了错误
  • 如何validationPOST数据是从Android应用程序发送正确的SHA1签名?
  • Proguard警告“不能写入资源(复制zip条目)”
  • Proguard不再适用于Retrofit
  • 在使用Proguard时使用jackson-json库的问题
  • 将以下行添加到您的proguardconfiguration。

     -renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable 

    现在,您的堆栈跟踪将包含行号,并且使用proguard(包含在Android SDK中)附带的回溯工具,您可以像正常一样进行debugging。

    请注意,即使你没有使用这两个configuration选项,回溯仍然可以输出有用的信息,只要你有映射文件,尽pipe不是完全明确的。

    注意:具有映射的文件由proguardconfiguration选项生成:

      -printmapping outputfile.txt 

    在Android SDK附带的ant文件中,它被设置为mapping.txt。

    祝你好运。

    要使用Android电子市场帐户中的任何堆栈跟踪,可以使用ProGuardconfiguration中使用-printmapping选项生成的映射文件与-printmapping (ProGuard配套工具)解码堆栈跟踪。 您也可以使用地图文件的内容手工解码,但是这是很乏味的。

    在ProGuard手册的示例中,有一节介绍如何生成有用的混淆堆栈轨迹,包括如何保留行号。

    不幸的是,如果您没有设置ProGuard来保留行号,那么您将只能识别抛出exception的方法。

    将堆栈跟踪粘贴到stack_trace.txt中

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

    retrace.jar位于sdk \ tools \ proguard \ lib \ retrace.jar中classes-processed.map是当您执行混淆时由proguard生成的输出文件