android studio 混淆在 proguard-rules.pro 中配置规则
1.不混淆jar包(匹配部分包名)
-dontwarn com.example.**
-keep class com.example.**{ *;}
2.不混淆某个类(需要些全类名)
-keep class com.example.test.Demo{*;}
3.不进行优化
-dontoptimize
4.不进行预校验
-dontpreverify
5.不混淆 Parcelable 不被混淆
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
6.不混淆枚举类的成员:values方法和valueOf (每个enum 类都默认有这两个方法)
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
7.不混淆Student子类的属性与方法
-keepclasseswithmembers class * extends Student{
< fields >;
< methods >;
}
8.不混淆activity子类不被混淆
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
9.指定不混淆所有的JNI方法
-keepclasseswithmembernames class * {
native < methods >;
}
10.移除Log类打印各个等级日志的代码,打正式包的时候可以做为禁log使用
-assumenosideeffects class android.util.Log {
public static *** v(...);
public static *** i(...);
public static *** d(...);
public static *** w(...);
public static *** e(...);
}
11.不混淆注解
-keepattributes *Annotation*
-keepattributes *JavascriptInterface*
12.不混淆BroadcastReceiver
-keep public class * extends android.content.BroadcastReceiver
注:1.android四大组件类名都不能混淆
2.使用fastJson解析的对象也不能混淆