Android、javamail和proguard

Android、javamail和proguard,android,jakarta-mail,proguard,Android,Jakarta Mail,Proguard,我试图在我的Android应用程序中使用javamail,但proguard抱怨说它找不到一大堆东西。我试过在网上搜索时找到的各种补救方法,但似乎都不管用。有人用过这个吗?谢谢 我在defauly proguard.cfg中添加了一些-dontwarn命令,并成功地消除了除此之外的所有警告消息: Warning: org.apache.harmony.awt.datatransfer.DataProxy: can't find referenced class [Ljava.awt.datatr

我试图在我的Android应用程序中使用javamail,但proguard抱怨说它找不到一大堆东西。我试过在网上搜索时找到的各种补救方法,但似乎都不管用。有人用过这个吗?谢谢

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

Warning: org.apache.harmony.awt.datatransfer.DataProxy: can't find referenced class [Ljava.awt.datatransfer.DataFlavor;
此警告的格式甚至与所有其他警告的格式都不相同。

Cfr

今天更详细的类似问题和答案:和


乱码错误消息[Ljava.awt.datatransfer.DataFlavor;已在ProGuard 4.6中解决。您只需在Android SDK中替换ProGuard.jar即可。或者,您可以通过列出引用类而不是引用类来解决此问题:-dontwarn org.apache.harmony.awt.datatransfer.DataProxy。

您正在使用此项目吗:

它在2.3SDK中使用了默认的Proguard设置,因此问题可能是标准javamail需要Android中不存在的AWT类


相关的示例代码位于

我使用的是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左侧的框。这将确保t JAR被导出到目标版本中。如果没有此修复,项目仍将生成,但javamail将不再工作,proguard也将失败。这根本不是proguard问题。这是Android SDK问题。不需要对proguard.cfg进行任何更改


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

我过去在proguard上遇到过问题,但除非你能更具体一些,否则我真的帮不了你。你能发布错误消息或任何其他信息吗?这会很难。有247条错误消息,而输出超出了问题的大小限制。您是否能够确定哪些行可能相关?或者,您可以使用或发布完整数据。我在自己的应用程序中使用此代码作为起点,在尝试导出apk之前,我没有遇到任何问题。警告:此javamail android库具有GPL许可证,这意味着您不能在商业中使用没有开源的社交应用程序你的应用程序也一样。刚刚尝试过,2.3 SDK也需要此修复:-A有同样的问题!非常感谢!工作很好!@philip:谢谢,先生,这对我很有帮助&现在正在我的项目中使用javamail谢谢!使用了几种方法都没有用,例如-libraryjars/lib/rt.jarjava/**,javax/security/**,javax/activation/**,org/ietf/jgss/**正在生成一个正在工作的.apk,但其中的实际电子邮件功能严重失败。此解决方案允许编译,但至少对我来说会破坏电子邮件功能:/此解决方案可以:如果您使用的是较旧版本的Proguard pre-4.6,则需要执行以下步骤才能使用选中的解决方案。选中Proguard版本: