2011-10-11 2 views
36

Je souhaite utiliser Proguard principalement pour des raisons d'obfuscation.Comment faire pour que Proguard ignore les bibliothèques externes?

Mon problème est que j'ai trois bibliothèques, Twitter4J et deux bibliothèques de signpost. Ces bibliothèques ont provoqué des erreurs lorsque j'ai essayé de créer un fichier APK signé. Pour obtenir plus de cela, je mets ce qui suit dans le fichier proguard.config ...

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

Bien que cela se débarrasse des erreurs dans la console, quand je chargé mon signé APK sur mon téléphone mobile instantanément écrasé. Le DDMS a indiqué que ceci était dû à une classe non trouvée dans Twitter4J. Se débarrasser de "dontwarns" ci-dessus n'a pas aidé. Aucun n'a ajouté dontshrink dontoptimise.

Je voudrais que Proguard ignore complètement les bibliothèques (car elles sont open source quand même). Est-ce possible?

Répondre

7

Vous devriez être en mesure d'ajouter à la proguard.cfg les lignes suivantes pour exclure toutes les classes dans un paquet (et) sous-paquets

-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

Salut @Nic Fort, hanks pour la réponse. J'ai ajouté le code mais quand j'ai essayé d'exporter l'APK signé beaucoup d'erreurs typiquement comme "[2011-10-11 15:11:00 - canonV0003PRO] Attention: oauth.signpost.signature.OAuthMessageSigner: ne peut pas trouver la classe référencée org.apache.commons.codec.binary.Base64 ". Toutes les autres suggestions grandement appréciées. Mel – Mel

+0

Avez-vous aussi ajouté oauth.signpost ** à la liste des paquets à conserver? –

+0

@Mel avez-vous eu la réponse ???? Je suis confronté au même problème – sheetal

52

Essayez ceci:

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

poste de @ Cf CaspNZ: Android Proguard with external jar

+0

Cela fonctionne, merci. – kodeshpa

+0

Merci beaucoup! J'ai d'abord ignoré cet article car je pensais que mes erreurs ne seraient pas résolues par ceci, mais d'une certaine manière il l'a fait. Je ne sais pas la magie de proguard ... – Boy

+0

@Boy plz réponse dans le studio android où ajouter ces lignes, soit dans 'proguard-project.txt' ou 'proguard-rules.pro' –

Questions connexes