Answers:
它应该位于build/outputs/proguard/release/mapping.txt
您的应用程序模块的目录中。
在最新版本的ProGuard和Android Studio中,该文件位于build/outputs/mapping/release/mapping.txt
。
/app/build/outputs/mapping/brandExampleEnvProductionRelease/mapping.txt
/app/build/outputs/mapping/brandExampleEnvIntegrationBeta/mapping.txt
是新的道路。
我发现将proguard配置为将mapping.txt文件写入build/
目录树之外的某个位置更为干净,这样可以更方便地将其检入版本控制中。
为此,请将其放入您的proguard-rules.pro
文件中:
-printmapping mapping.txt
这(很可能)会将其放置在与proguard-rules.pro
文件相同的目录中。最终,您可能希望将其写入与APK文件相同的目录,并使用等效名称(其中可能包括风味,构建类型等)。
注意:根据我的经验,proguard模板文件并不能解决这个问题(注释者在此处建议了另一个答案)。
更新:如果您有多种产品口味,那么这是一个更好的解决方案:https : //stackoverflow.com/a/31116608/444761
我发现它没有生成,所以我将其添加到了规则文件中
-printmapping build/outputs/mapping/release/mapping.txt
回答这个问题还为时已晚,以防万一有人需要我的回答。
要模糊处理的映射文件的位置:
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商店时)。
要将混淆后的堆栈跟踪自己转换为可读的堆栈,请使用retrace脚本(在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
我更喜欢本地版本的模糊处理,因为它可以很方便地预先检查生产错误。
希望对您有所帮助。
我正在使用Android Studio 2.2.2版本。对我来说,它位于以下位置:
对于调试:
\app\build\outputs\mapping\debug\mapping.txt
发布:
\app\build\outputs\mapping\release\mapping.txt