2011-10-11 13 views
36

Chcę używać programu Proguard głównie do celów zaciemniania.Jak program Proguard ignorować bibliotek zewnętrznych?

Moim problemem jest to, że mam trzy biblioteki, Twitter4J i dwie biblioteki drogowskazów. Te biblioteki spowodowały błędy podczas próby utworzenia podpisanego pliku APK. Przeboleć ten umieścić następujące informacje w pliku proguard.config ...

-dontwarn org.apache.commons.codec.binary.** 
-dontwarn org.slf4j.** 
-dontwarn com.sun.syndication.io.** 
-dontwarn com.sun.syndication.feed.synd.* 

Chociaż pozbył błędów w konsoli, kiedy załadowany mój podpisany APK na telefonie komórkowym to natychmiast rozbił. DDMS stwierdziło, że było to spowodowane brakiem klasy w serwisie Twitter4J.

Pozbycie się powyższego "dontwarns" nie pomogło. Nie dodano również dontshrink dontoptimise.

Chciałbym, aby Proguard całkowicie ignorował biblioteki (ponieważ i tak są one open source). czy to możliwe?

Odpowiedz

7

Powinieneś być w stanie dodać do proguard.cfg następujące linie do wykluczenia wszystkich klas w ramach pakietu (i podpakiety)

-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.** 
+0

Witam @Nic Strong, pasjonuje się odpowiedzią. Dodałem kod, ale gdy próbowałem wyeksportować podpisany plik APK, wiele błędów zazwyczaj przypomina "[2011-10-11 15:11:00 - canonV0003PRO] Ostrzeżenie: oauth.signpost.signature.OAuthMessageSigner: nie można znaleźć klasy referencyjnej org.apache.commons.codec.binary.Base64 ". Wszelkie inne sugestie bardzo doceniamy. Mel – Mel

+0

Czy dodałeś również oauth.signpost. ** do listy pakietów do zachowania? –

+0

@Mel dostałeś odpowiedź ???? Mam ten sam problem z odpowiedzią – sheetal

52

Spróbuj:

-keep class javax.** { *; } 
-keep class org.** { *; } 
-keep class twitter4j.** { *; } 

Cf słupek z @ CaspNZ: Android Proguard with external jar

+0

To działa, dziękuję. – kodeshpa

+0

Wielkie dzięki! Najpierw zignorowałem ten post, ponieważ myślałem, że moje błędy nie zostaną rozwiązane przez to, ale jakoś tak się stało. Po prostu nie znam magii proguard ... – Boy

+0

@Boy plz odpowiedź w android studio, gdzie dodać te linie, albo w "proguard-project.txt" lub "proguard-rules.pro" –