project.properties 中設置
proguard.config=proguard-project.txt
proguard-project.txt 中設置
-optimizationpasses 5 ->設置混淆的壓縮比率 0 ~ 7 -dontusemixedcaseclassnames -> Aa aA -dontskipnonpubliclibraryclasses ->如果應用程序引入的有jar包,並且想混淆jar包里面的class -dontpreverify -verbose ->混淆后生產映射文件 map 類名->轉化后類名的映射 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* ->混淆采用的算法. -keep public class * extends android.app.Activity ->所有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 -dontwarn android.support.v4.** -dontwarn android.annotation -libraryjars libs/android-support-v4.jar -keepclasseswithmembernames class * { -> 所有native的方法不能去混淆. native <methods>; } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); -->某些構造方法不能去混淆 } -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } -keepclassmembers enum * { -> 枚舉類不能去混淆 public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { -> aidl文件不能去混淆. public static final android.os.Parcelable$Creator *; } -keepclassmembers class * { public <init>(org.json.JSONObject); } -keep class android.support.v4.**{*;} -keepattributes *Annotation* ============================================ 對於引用第三方包的情況,可以采用下面方式避免打包出錯: -libraryjars libs/aaa.jar -dontwarn com.xx.yy.** -keep class com.xx.yy.** { *;}
