gpt4 book ai didi

Android、Proguard 和 Javamail

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:58:48 26 4
gpt4 key购买 nike

首先,我已经提到过类似的帖子,Android, javamail and proguard

提到的解决方案是在 proguard-project.txt 中明确保留以下内容:

-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.** {*;}

乍一看,这似乎可行,因为它在没有任何警告的情况下编译。但是,它无法读取消息内容并直接跳过它。我尝试了以下方法:

  1. -includelibraryjars 显式命名 javamail 所需的 3 个 jar 文件。
  2. -按照新的 libs/include 格式删除了作为外部库的 jars。
  3. -在 proguard-android.txt 中维护默认的 android 设置
  4. -遵循混淆器常见问题解答中的故障排除指南。
  5. -启动一个新项目并将源文件复制到其中。
  6. -尝试了各种proguard选项,包括-dontshrink、keepnames等
  7. -痴迷项目/清洁

经过几个小时的挫折,我发现这似乎有效:

-dontobfuscate
-dontshrink
-keepdirectories
-keeppackagenames javax.mail.**
-keeppackagenames javax.activation.**
-keeppackagenames com.sun.mail.**
-keeppackagenames myjava.**
-keeppackagenames org.apache.harmony.**
-keeppackagenames mailcap.**
-keeppackagenames mimetypes.**
-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.** {*;}

-dontwarn java.awt.**
-dontwarn java.beans.Beans
-dontwarn javax.security.**

当然这很荒谬,因为我正在打开 -dontobfuscate 和 -dontshrink。任何 proguard 和 javamail 专家对此都有解决方案吗?我是 ADT17,使用 2.1(api7) 进行构建。如果我可以将 jar 完全排除在流程之外?在这一点上,任何建议都是天赐之物。

最佳答案

问题解决了。对于上面链接中提到的其他解决方案有问题的任何人,我已经在此处发布了解决方案。

因为我在 javamail (Mail.java) 中使用了帮助程序类,所以我需要将该类作为 -keep 包含在内,这样它才能工作。我编辑了 Android, javamail and proguard 提供的解决方案包括 helper 类,因为许多人使用这个和其他解决方案如果没有它可能会失败。

将其放入您的 proguard-project.txt 文件中。否则我使用默认的 android 设置。

-dontshrink
-keep class javax.** {*;}
-keep class com.sun.** {*;}
-keep class myjava.** {*;}
-keep class org.apache.harmony.** {*;}
-keep public class Mail {*;}
-dontwarn java.awt.**
-dontwarn java.beans.Beans
-dontwarn javax.security.**

关于Android、Proguard 和 Javamail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10850304/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com