微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android,javamail和proguard

我试图在我的 Android应用程序中使用javamail,但是proguard抱怨它无法找到的大量内容.我尝试过在搜索互联网时找到的各种补救措施,但似乎没有任何效果.有人有这个东西吗?谢谢.

我已经向defauly proguard.cfg添加了一些-dontwarn命令,并成功消除了除此之外的所有警告消息:

Warning: org.apache.harmony.awt.datatransfer.DataProxy: can't find referenced class [Ljava.awt.datatransfer.DataFlavor;

此警告的格式与其他警告的格式不同.

解决方法

我正在使用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或更高版本可能会破坏它.要解决此问题,请选择项目>属性> Java构建路径>从菜单中订购和导出,并选中javamail使用的三个罐子左侧的框.这可确保将jar导出到目标构建.如果没有此修复程序,项目仍将构建,但javamail将不再起作用,proguard也将失败.这根本不是一个问题.这是一个Android SDK问题.不需要更改proguard.cfg.

升级SDK的另一个后果是不再需要手动升级proguard.

原文地址:https://www.jb51.cc/android/317423.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐