android studio,其中是proguard映射文件

CQM*_*CQM 161 android proguard apk android-studio

在android studio中编译已签名的APK后生成的proguard映射文件在哪里?

我不确定它是否无法工作或者我是否忘记了文件路径,并且我的强制google/stackoverflow搜索没有回答这个问题

Sco*_*rta 241

它应位于build/outputs/proguard/release/mapping.txt应用程序模块的目录中.

在最新版本的ProGuard和Android Studio中,该文件位于build/outputs/mapping/release/mapping.txt.

  • 有关生成的文件和路径的更多信息:https://developer.android.com/studio/build/shrink-code.html (5认同)
  • 更新:从 AS 4.1.1 、 Gradle 插件 4.0.2 、 Gradle 6.1.1 开始,您需要有 ```minifyEnabled true``` 才能在 ```build/outputs/mapping/<FLAVOUR' 中获取 mapping.txt >/mapping.txt``` (2认同)

Tom*_*Tom 72

对他来说,他们在 'build/outputs/mapping/release'

  • '构建/输出/映射/释放/的mapping.txt' (15认同)

Mar*_*ark 38

我发现将proguard配置为将mapping.txt文件写入build/目录树之外的位置更加清晰,这样可以更方便地检查版本控制.

要实现此目的,请将其放入您的proguard-rules.pro文件中:

-printmapping mapping.txt
Run Code Online (Sandbox Code Playgroud)

这将(很可能)将其放在与proguard-rules.pro文件相同的目录中.最终,您可能希望将其写入与APK文件相同的目录并使用等效名称(可能包括flavor,构建类型等).

注意:根据我的经验,这不会被proguard模板文件推翻(这是由评论者提出的另一个答案).

更新:如果你有多种产品口味,那么这是一个更好的解决方案:https://stackoverflow.com/a/31116608/444761


Cli*_*ies 35

我发现它没有生成,所以我将其添加到规则文件中

-printmapping build/outputs/mapping/release/mapping.txt
Run Code Online (Sandbox Code Playgroud)

  • 仍然没有映射目录。也许是因为V8现在忽略了progurad?如何用V8生成它? (2认同)

Wit*_*ult 14

回答这个问题已经很晚了,以防有人需要我的回答.

映射文件到反混淆的位置:

ProGuard将文件保存在app app/build/outputs/mapping/FLAVOR/release/mapping.txt中

通常在调试模式下,您不需要映射文件,因为通常会禁用混淆.如果不是这种情况,那么请确保在build.gradle文件中有以下代码用于调试变量.

debug {
    minifyEnabled false
    debuggable true
}
Run Code Online (Sandbox Code Playgroud)

一些陷阱:

每次使用ProGuard创建发布版本时,mapping.txt文件都会被覆盖,因此在创建新版本之前首先要备份该文件.它将有助于从旧版本的应用程序中混淆堆栈跟踪.

除此之外,有两种方法可以混淆代码:

1.将您的mapping.txt文件上传到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>]
Run Code Online (Sandbox Code Playgroud)

例如:

retrace.bat -verbose mapping.txt obfuscated_trace.txt
Run Code Online (Sandbox Code Playgroud)

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

我希望它有所帮助.


Fai*_*ikh 12

我使用的是Android Studio 2.2.2版.对我而言,它位于以下位置:

用于调试: \app\build\outputs\mapping\debug\mapping.txt

发布: \app\build\outputs\mapping\release\mapping.txt


Sim*_*mon 9

在此输入图像描述

这是一张图片 - 你会在映射文件夹中找到它:


小智 7

如果有人仍在搜索mapping.txt:

build.gradle 中的 minifyEnabled 必须设置为 true

我正在使用 Android Studio 4.2 Beta 4,标准设置是错误的。

如果 minifyEnable 设置为 false,则构建不会“缩小”,因此映射文件当然不是必需的,但 google-play-console 无论如何都会要求映射文件。

...对于初学者来说非常混乱