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 

我更喜欢本地版本的混淆,因为它非常方便预先检查生产错误。

我希望它有帮助。