まず、私はすでに同様の投稿、Android、javamail、および 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.** {*;}
一見すると、警告なしでコンパイルされたので、これは機能しているように見えました。ただし、メッセージの内容の読み取りに失敗し、すぐにスキップします。私は次のことを試しました:
- -includelibraryjars は、javamail に必要な 3 つの jar ファイルを明示的に指定します。
- - 新しい libs/ include 形式に従って、jar を外部ライブラリとして削除しました。
- -proguard-android.txt でデフォルトの Android 設定を維持
- -proguard faq のトラブルシューティング ガイドに従いました。
- - 新しいプロジェクトを開始し、ソース ファイルをそれにコピーしました。
- -dontshrink、keepnamesなどを含むさまざまなプロガードオプションを試しました
- -強迫的なプロジェクト/クリーン
数時間の欲求不満の後、これが私が見つけたもので、うまくいっているようです:
-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 をオンにしているので、それはばかげています。プロガードとJavamailの達人はこれに対する解決策を持っていますか? 私は ADT17 で、ビルドに 2.1(api7) を使用しています。ジャーをプロセスから完全に除外できたら?この時点で、どんなアドバイスも天の恵みになります。