当我得到这样的东西
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 附属工具)对堆栈跟踪进行解码。您还可以使用映射文件的内容手动解码,但是这很乏味。
-printmapping
在示例下的 ProGuard 手册中,有一个关于生成有用的模糊堆栈跟踪的部分,包括如何保留行号。
不幸的是,如果您没有设置 ProGuard 来保留行号,那么您将只能识别引发异常的方法。
在前卫配置中添加以下代码行。
-renamesourcefileattribute SourceFile -keepattributes SourceFile,LineNumberTable
现在您的堆栈跟踪将包含行号,通过使用 proGuard 附带的 retrace 工具(包含在 Android SDK 中) ,您可以像平常一样进行调试。
注意,即使您没有使用这两个配置选项,retrace 仍然可以输出有用的信息,只要您有映射文件,尽管不是完全明确。
注意: 带有映射的文件是由 proGuard 配置选项生成的:
-printmapping outputfile.txt
在 Android SDK 附带的 ant 文件中,它被设置为 mapping.txt。
祝你好运。
将堆栈跟踪粘贴到 stack _ trace. txt 中
运行以下命令: java-jar retrace.jar 类-处理. map stack _ trace. txt
Jar 位于 sdk 工具 proGuard lib retrace.jar Classs- 处理的. map 是在进行模糊处理时由 proGuard 生成的输出文件
这里有一个来自 AndroidSDK: 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>]
要回溯模糊的 ProGuard 文件,请执行以下步骤:
您需要安装 ProGuard。
ProGuard 为您提供了一个用户界面模式,这是一个很好的工具来回溯。
打开你在 MAC 机里找到的 proguardgui.sh
/Users/{name}/Library/Android/sdk/tools/proguard/bin/proguardgui.sh
你可以在终端机上运行。