Проблемы с Android ADT, Proguard и внешними банками - PullRequest
2 голосов
/ 24 января 2011

Итак, я пытаюсь заставить встроенную реализацию ADT proguard работать для моего приложения.К сожалению, кажется, что он задыхается от различных классов в сторонних библиотеках, на которые я ссылаюсь.Я пробовал различные, если не все, комбинации строк -libraryjars и -keep public class, о которых я могу думать, но все это бесполезно.Я не настолько опытен с Proguard, поэтому, честно говоря, я не знаю, где я иду не так.Я пробовал Google, но большая часть информации касается скриптов Ant.

Некоторые вещи, которые я пробовал:

  • Строки, подобные -libraryjars C: \Users \ Dave \ workspace \ Dropbox_Sync_for_Tasker_and_Locale \ lib \ apache-mime4j-0.6.jar вверху или внизу файла

  • Строки, пытающиеся сделать пути к таким банкам относительно, новообще успех.

  • Строки, подобные -keep public class org.apache.commons.logging.LogFactory

  • Строка, относящаяся к другой частистрок ошибок, например -keep открытый класс org.apache.james.mime4j.field.MailboxListField

В любом случае, журнал ошибок представляет собой огромную стену текста, поэтому я поставилэто на пастбине здесь .

Ответы [ 3 ]

3 голосов
/ 10 февраля 2011

Так что, если вам случится найти этот ответ, и, как если бы, хм, у меня тоже была эта проблема, я хотел бы, чтобы он опубликовал свое решение, вам наполовину повезло.

То, как я это исправилнужно было просто вставить туда строки -libraryjars, а затем

-dontwarn org.apache.commons.logging.LogFactory
-dontwarn net.jcip.annotations.NotThreadSafe
-dontwarn net.jcip.annotations.ThreadSafe
-dontwarn net.jcip.annotations.Immutable

И все заработало нормально.Это взлом, и это грязно, но это решило это для меня.К сожалению, вы по-прежнему в одиночку, если у вас тоже есть эта проблема.

3 голосов
/ 30 мая 2011

У меня была точно та же проблема после добавления "apache-mime4j-0.6.1.jar" и "httpmime-4.0.1.jar" в мой проект.(для составных POST'ов двоичных данных на моем сервере).

Я также не знаком с pro-guard, но по крайней мере мне удалось добавить свой собственный виджет в proguard.cfg - к сожалению, apacheбиблиотеку оказалось еще сложнее добавить!

это мое исправление ... Я добавил это в конец proguard.cfg:

#APACHE LIBRARY
-libraryjars /libs/apache-mime4j-0.6.1.jar
-libraryjars /libs/httpmime-4.0.1.jar
-keepnames class org.apache.** {*;}
-keep public class org.apache.** {*;}
-dontwarn org.apache.commons.logging.LogFactory
-dontwarn org.apache.http.annotation.ThreadSafe
-dontwarn org.apache.http.annotation.Immutable
-dontwarn org.apache.http.annotation.NotThreadSafe

Я надеялся, что первые 4 строкибыло бы исправить.К сожалению, dontwarn нужны, чтобы действительно «исправить» это.

Исправьте меня, если я ошибаюсь (так как я не proGuard pro), но я считаю, что первые 4 строки гарантируют, что библиотеки используются какявляется.Второй раздел из четырех строк (dontwarn) просто закрывает оставшееся дерьмо и не исправляет некоторые основные проблемы.Какова основная проблема, я не знаю.

0 голосов
/ 02 февраля 2011

попробуйте загрузить commons-logging.jar , поместите его в свои библиотеки и добавьте -libraryjars в конфигурацию Proguard.

...