Android, Proguard и Javamail

Во-первых, я уже упоминал об аналогичном сообщении, 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.** {*;}

На первый взгляд, это сработало, так как компилировалось без каких-либо предупреждений. Однако он не может прочитать содержимое сообщения и просто пропускает его. Я пробовал следующее:

  1. -includelibraryjars явно называя 3 файла jar, необходимые для javamail.
  2. - Банки удалены как внешняя библиотека в соответствии с новым форматом libs/include.
  3. - сохранил настройки Android по умолчанию в proguard-android.txt
  4. - следовал руководству по устранению неполадок в часто задаваемых вопросах proguard.
  5. -запустил новый проект и скопировал в него исходные файлы.
  6. -перепробовал различные опции proguard, в том числе -donthrink, 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 и -dontshink. У любого гуру proguard и javamail есть решение? Я ADT17, использую 2.1 (api7) для сборки. Если бы я мог полностью исключить банки из процесса, может быть? Любой совет будет находкой в ​​этот момент.

5
задан Community 23 May 2017 в 12:26
поделиться