现在回答这个问题已经很晚了,但以防万一有人需要我的回答。
要反混淆的映射文件的位置:
ProGuard 将文件保存在应用程序中
app/build/outputs/mapping/FLAVOR/release/mapping.txt
通常在调试模式下,您不需要映射文件,因为通常会禁用混淆。
如果不是这种情况,请确保在 build.gradle 文件中有以下调试变体代码。
debug {
minifyEnabled false
debuggable true
}
一些陷阱:
每次使用 ProGuard 创建发布版本时,mapping.txt 文件都会被覆盖,因此请先备份该文件,然后再创建新版本。这将有助于从您的应用程序的旧版本中混淆堆栈跟踪。
除此之外,还有两种混淆代码的方法:
1.将您的 mapping.txt 文件上传到 Google Play 控制台:
在 Google Play 上发布您的应用时,您可以为每个版本的 APK 上传 mapping.txt 文件。然后,Google Play 将对来自用户报告的问题的传入堆栈跟踪进行去混淆处理,以便您可以在 Google Play 控制台中查看它们。
2。使用本地sdk工具retrace.sh/retrace.bat:
有时您希望运行应用的发布版本(通过将构建变体更改为发布并运行它)来交叉检查和修复错误,以便它不会在生产中发生(发布到 Play-store 时)。
要自己将混淆的堆栈跟踪转换为可读的,请使用回溯脚本(Windows 上的retrace.bat;Mac/Linux 上的retrace.sh)。
它位于<sdk-root>/tools/proguard/bin/ 目录中。
<sdk-root> 是您安装所有 android 库和 sdk 的地方。
脚本获取 mapping.txt 文件和您的堆栈跟踪,生成一个新的、可读的堆栈跟踪。
命令语法:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
例如:
retrace.bat -verbose mapping.txt obfuscated_trace.txt
我更喜欢本地版本的混淆,因为它可以很方便地预先检查生产错误。
希望对你有帮助。