使用Proguard时,mapping.txt文件未生成。

12

当我使用Proguard混淆我的应用程序时,我遇到了问题。

在Android Studio中创建新应用程序时,我能够使用Proguard并生成mapping.txt,但是当我尝试在从Eclipse迁移到Android Studio的项目上使用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文件。 - Rahul Tiwari
2
我也遇到了类似的问题。我在 build.gradle 中忘记将 minifyEnabled 改为 true :) - Yani2000
2个回答

13

尝试从您的文件中删除以下行:

-dontobfuscate
.
.
.
-printmapping build/outputs/mapping/release/mapping.txt

第一行似乎禁用了混淆,而最后一行则将映射文件复制到非默认位置。


如果从proguard-rules文件中删除-dontobfuscate,则如果更改versionCode,则您的shared-preferences数据将无法正常工作。 - Ahamadullah Saikat
2
@AhamadullahSaikat 代码混淆与应用程序保存的数据(包括共享首选项)无关。 - Rahul Tiwari

1
从整个项目中删除“-dontobfuscate”,然后您将在build/outputs/mapping/下生成映射文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接