8

J'essaie d'utiliser Proguard contre mon application qui intègrera éventuellement LVL et la facturation In-App. Le problème que j'ai est que Proguard continue à planter mon application au démarrage et il est difficile de comprendre ce qui échoue. J'utilise la bibliothèque de compatibilité de support d'Android V4 et il semble souffler cette bibliothèque ainsi que d'autres choses.Proguard App Android pour LVL et support de compatibilité de fragment

Quelqu'un at-il un proguard.cfg qui fonctionne avec une version de base de la bibliothèque compat v4 pour les débutants?

Actuellement j'utilise le stock proguard.cfg qui ne fonctionne pas.

-optimizationpasses 5 
-dontusemixedcaseclassnames 
-dontskipnonpubliclibraryclasses 
-dontpreverify 
-verbose 
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 

-keep public class * extends android.app.Activity 

-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.app.backup.BackupAgentHelper 
-keep public class * extends android.preference.Preference 
-keep public class com.android.vending.licensing.ILicensingService 

-keepclasseswithmembernames class * { 
    native <methods>; 
} 

-keepclasseswithmembernames class * { 
    public <init>(android.content.Context, android.util.AttributeSet); 
} 

-keepclasseswithmembernames class * { 
    public <init>(android.content.Context, android.util.AttributeSet, int); 
} 

-keepclassmembers enum * { 
    public static **[] values(); 
    public static ** valueOf(java.lang.String); 
} 

-keep class * implements android.os.Parcelable { 
    public static final android.os.Parcelable$Creator *; 
} 

Répondre

15

Ce ne suffit pas de produire une application de travail .. proguard sera par exemple supprimer tous vos fragments par défaut , et il y a un peu plus de compat. bibliothèques qu'il utilise.

J'ai trouvé les oeuvres suivantes:

-dontwarn **CompatHoneycomb 
-dontwarn **CompatHoneycombMR2 
-dontwarn **CompatCreatorHoneycombMR2 
-keep class android.support.v4.** { *; } 

-keep public class * extends android.support.v4.** 
-keep public class * extends android.app.Fragment 

En théorie, si vous voulez simplement proguard comme obfuscateur et ne sont pas ineterested dans ses autres « caractéristiques », puis

-dontshrink 
-dontoptimize 

Devrais changer c'est éteint. Même avec cela, bien tester à fond sur un téléphone réel android 1.6. Je ne l'ai pas fait et j'ai trouvé trop tard proguard avait fait un changement de rupture au binaire qui ne se manifestait que sur 1,6 ...

8

Pour avoir Proguard travailler avec la bibliothèque de compatibilité v4 ajouter à votre proguard.cfg:

 
-dontwarn **CompatHoneycomb 
-keep class android.support.v4.** { *; } 
Questions connexes