Android,javamail和proguard

我正在尝试在我的Android应用程序中使用javamail,但是proguard抱怨找不到所有的东西。 我已经尝试过在search互联网时find的各种补救办法,但似乎没有任何工作。 有没有人得到这个东西的工作? 谢谢。

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

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

这个警告的格式与所有其他格式不一样。

  • 如何在Eclipse中debuggingProguard混淆apk文件
  • Android&Proguard - 如何混淆,但不优化任何代码?
  • 如何设置亚马逊iap的proguard?
  • Google Analytics(分析)回溯Proguard
  • 告诉Proguard在方法上保留注释
  • Google Play开发控制台在Stacktrace中显示类和方法名称
  • Androiddevise支持库proguard规则
  • 错误Proguard不支持的类版本号
  • 我正在使用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或更高版本可能会破坏它。 要解决这个问题,请从菜单中selectProject> Properties> Java Build Path> Order and Export,然后选中javamail使用的三个jar的左边的框。 这确保了jar子被导出到目标构build。 没有这个修复,项目仍然会build立,但是javamail将不再工作,并且proguard也将失败。 这根本不是一个进步问题。 这是一个Android SDK问题。 不需要更改proguard.cfg。

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

    (CFR)。 ProGuard手册>故障排除>警告:找不到超类或界面。

    今天更详细的类似的问题和答案: 一个在stackoverflow和一个在ProGuard的帮助论坛 。

    乱码错误消息“[Ljava.awt.datatransfer.DataFlavor;” 已经在ProGuard 4.6中解决了。 您可以简单地在Android SDK中replaceproguard.jar。 或者,您可以通过列出引用类而不是引用类来解决问题:“-dontwarn org.apache.harmony.awt.datatransfer.DataProxy”。

    你使用这个项目: javamail-android ?

    它为我工作没有一个单一的顺利(诚然使用2.3 SDK中的默认Proguard设置),所以问题可能是标准的javamail需要AWT类不在Android中。

    相关的示例代码是在Android中发送没有用户干预(无意图)的电子邮件