我正在使用 2.1 SDK,这可能会有所作为。我也有一个相当复杂的电子邮件。但是我现在已经对它进行了排序,升级到 proguard 4.6 并将以下行添加到我的 proguard,cfg 中:
-dontwarn java.awt.**
-dontwarn java.beans.Beans
-dontwarn javax.security.**
-keep class javamail.** {*;}
-keep class javax.mail.** {*;}
-keep class javax.activation.** {*;}
-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 mailcap.** {*;}
-keep class mimetypes.** {*;}
-keep class myjava.awt.datatransfer.** {*;}
-keep class org.apache.harmony.awt.** {*;}
-keep class org.apache.harmony.misc.** {*;}
最后一组行很重要。我通过对 javamail 包中的每个 jar 运行 tar tf 命令来获得它。
SDK 17 更新
Android SDK 17 对 jar 的加载方式进行了一些更改。如果您有一个使用外部 jar 的项目,升级到 SDK 17 或更高版本可能会破坏它。要解决此问题,请从菜单中选择 Project > Properties > Java Build Path > Order and Export,然后选中 javamail 使用的三个 jar 左侧的框。这可确保将 jar 导出到目标构建。如果没有这个修复,项目仍然会构建,但 javamail 将不再工作,proguard 也会失败。这根本不是一个proguard问题。这是一个 Android SDK 问题。不需要对 proguard.cfg 进行任何更改。
升级 SDK 的另一个结果是不再需要手动升级 proguard。