Android,javamail和proguard

前端之家收集整理的这篇文章主要介绍了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.

猜你在找的Android相关文章