Подтвердить что ты не робот

Как заставить 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). Возможно ли это?

4b9b3361

Ответ 2

Вы можете добавить в 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.**