使用 Proguard 时未生成 mapping.txt 文件
Posted
技术标签:
【中文标题】使用 Proguard 时未生成 mapping.txt 文件【英文标题】:mapping.txt file is not getting generated when using Proguard 【发布时间】:2015-11-12 09:14:19 【问题描述】:我在使用 proguard 混淆我的应用时遇到问题。
当我在 android studio 中创建新应用程序时,我可以使用 proguard,它正在生成 mapping.txt,但是当我尝试在从 eclipse 迁移到 android 的项目上使用 proguard 时,没有生成 mapping.txt工作室。
以下是我的 proguard-rules.pro 文件
-dontobfuscate
-dontshrink
-keepdirectories
-keeppackagenames javax.mail.**
-keeppackagenames javax.activation.**
-keeppackagenames com.sun.mail.**
-keeppackagenames myjava.**
-keeppackagenames org.apache.harmony.**
-keeppackagenames mailcap.**
-keeppackagenames mimetypes.**
-keep class javamail.** *;
-keep class javax.mail.** *;
-keep class javax.activation.** *;
-keep class javax.mail.internet.** *;
-keep class com.sun.mail.dsn.** *;
-keep class com.sun.mail.handlers.** *;
-keep class com.sun.mail.smtp.** *;
-keep class com.sun.mail.util.** *;
-keep class javax.ws.rs.** *;
-keep class mailcap.** *;
-keep class mimetypes.** *;
-keep class myjava.awt.datatransfer.** *;
-keep class org.apache.harmony.awt.** *;
-keep class org.apache.harmony.misc.** *;
-dontwarn com.fasterxml.jackson.**
-dontwarn java.awt.**
-dontwarn java.beans.Beans
-dontwarn javax.security.**
-ignorewarnings
-printmapping build/outputs/mapping/release/mapping.txt
【问题讨论】:
请同时发布您的 proguard-rules 文件 我遇到了类似的问题。我忘记在 build.gradle 中将 minifyEnabled 更改为 true :) 【参考方案1】:尝试从您的文件中删除以下行:
-dontobfuscate
.
.
.
-printmapping build/outputs/mapping/release/mapping.txt
第一行似乎禁用了混淆,最后一行似乎将映射文件复制到默认位置以外的位置。
【讨论】:
如果您从 proguard-rules 文件中删除 -dontobfuscate,那么如果您更改 versionCode,您的共享首选项数据将不起作用。 @AhamadullahSaikat 代码混淆与应用程序保存的数据(包括共享偏好)无关。【参考方案2】:从整个项目中删除 -dontobfuscate ,您将在 build/outputs/mapping/.. 下生成映射文件。
【讨论】:
以上是关于使用 Proguard 时未生成 mapping.txt 文件的主要内容,如果未能解决你的问题,请参考以下文章
proguard applymapping - mapping.txt 的更改不适用于下一个构建签名的 apk