android studio,其中是proguard映射文件
在android工作室编译签名APK后生成proguard映射文件?
我不知道如果它不工作,或者如果我只是忘记了文件path,而我的强制谷歌/ stackoverflowsearch没有回答这个
它应该位于应用程序模块目录下的build/outputs/proguard/release/mapping.txt
中。
对我来说,他们在“构build/输出/映射/发布”
我发现configurationproguard将mapping.txt文件写到build/
目录树之外的位置会更简洁,因此可以更方便地将其检入到版本控制中。
要做到这一点,把它放在你的proguard-rules.pro
文件中:
-printmapping mapping.txt
这将(很有可能)将其放置在与proguard-rules.pro
文件相同的目录中。 最终,你可能想把它写到你的APK文件所在的同一个目录,并使用相同的名称(可能包括flavor,构buildtypes等)。
注意:根据我的经验,这不是由proguard模板文件(这是一个评论者提出的另一个答案在这里)推翻。
更新:如果你有多个产品口味,那么这是一个更好的解决scheme: https : //stackoverflow.com/a/31116608/444761
我发现它没有被生成,所以我把它添加到规则文件
-printmapping build/outputs/mapping/release/mapping.txt
我正在使用Android Studio 2.2.2版本。 对我来说,它位于以下位置:
对于debug: \app\build\outputs\mapping\debug\mapping.txt
发布: \app\build\outputs\mapping\release\mapping.txt
这是在一张图片 – 你会发现它在映射文件夹中:
因为即使有人告诉我这个文件在哪里,我也是愚蠢的,迷路了:
cd StudioProjects/fooProject find . -name "mapping.txt" | xargs less
它回答这个问题的时间相当晚,但以防万一需要我的回答。
映射文件的位置去混淆:
ProGuard将文件保存在应用程序app / build / outputs / mapping / FLAVOR / release / mapping.txt中
通常在debugging模式下,您不需要映射文件,因为通常会禁用混淆。 如果不是这种情况,那么确保在build.gradle文件中有debuggingvariables的代码如下。
debug { minifyEnabled false debuggable true }
一些问题:
每次使用ProGuard创build发布版本时,mapping.txt文件都会被覆盖,所以在创build新发行版之前,请先备份该文件。 这将有助于从旧版本的应用程序混淆堆栈跟踪。
除此之外,有两种方法来混淆你的代码:
1.将您的mapping.txtfile upload到Google Play控制台:
在Google Play上发布您的应用时,您可以上传APK版本的mapping.txt文件。 然后,Google Play将从用户报告的问题中反汇总传入的堆栈跟踪,以便您可以在Google Play控制台中查看这些跟踪。
2.使用本地sdk工具retrace.sh/retrace.bat:
有些时候,你想运行你的应用程序的发布版本(通过更改生成变体释放和运行)来交叉检查和修复错误,使其不会发生在生产(发布到游戏存储)。
要将模糊的堆栈跟踪转换为可读的堆栈跟踪,请使用回溯脚本( Windows上的retrace.bat; Mac / Linux上的retrace.sh )。
它位于<sdk-root>/tools/proguard/bin/
目录中。
<sdk-root>
是安装了所有android库和sdks的地方。
该脚本获取mapping.txt文件和您的堆栈跟踪,生成一个新的,可读的堆栈跟踪。
命令语法:
retrace.bat|retrace.sh [-verbose] mapping.txt [<stacktrace_file>]
例如:
retrace.bat -verbose mapping.txt obfuscated_trace.txt
我更喜欢本地版本的混淆,因为它非常方便预先检查生产错误。
我希望它有帮助。