Ответ 1
Попробуйте следующее:
-keep class javax.** { *; }
-keep class org.** { *; }
-keep class twitter4j.** { *; }
Сообщение Cf от @CaspNZ: Android Proguard с внешней банкой
Я хочу использовать Proguard в основном по причинам обфускации.
Моя проблема в том, что у меня есть три библиотеки, Twitter4J и две библиотеки signpost. Эти библиотеки вызвали ошибки, когда я попытался создать подписанный APK. Чтобы преодолеть это, я ввел в файл proguard.config
следующее:
-dontwarn org.apache.commons.codec.binary.**
-dontwarn org.slf4j.**
-dontwarn com.sun.syndication.io.**
-dontwarn com.sun.syndication.feed.synd.*
Хотя это избавилось от ошибок в консоли, когда я загрузил подписанный APK на свой мобильный телефон, он мгновенно разбился. DDMS заявила, что это связано с классом, не найденным в Twitter4J.
Избавление от "dontwarns"
выше не помогло. Не добавлено dontshrink dontoptimise
.
Мне бы хотелось, чтобы Proguard полностью игнорировал библиотеки (поскольку они все равно являются open-source). Возможно ли это?
Попробуйте следующее:
-keep class javax.** { *; }
-keep class org.** { *; }
-keep class twitter4j.** { *; }
Сообщение Cf от @CaspNZ: Android Proguard с внешней банкой
Вы можете добавить в proguard.cfg следующие строки, чтобы исключить все классы в пакете (и подпакетах)
-keep class org.apache.commons.codec.binary.**
-keep interface org.apache.commons.codec.binary.**
-keep enum org.apache.commons.codec.binary.**
-keep class org.slf4j.**
-keep interface org.slf4j.**
-keep enum org.slf4j.**
-keep class com.sun.syndication.io.**
-keep interface com.sun.syndication.io.**
-keep enum com.sun.syndication.io.**
-keep class com.sun.syndication.feed.synd.**
-keep interface com.sun.syndication.feed.synd.**
-keep enum com.sun.syndication.feed.synd.**