一 、高频率使用语法
#keep 保留,例如
-keepattributes:表示保留属性
-keep:符合条件的类和类成员既不会被压缩也不会被混淆
-keepnames是-keep,allowshrinking的缩写, 而allowshrinking的意思是允许符合条件的类和类成员被压缩(删除)
#一颗星表示只是保持该包下的类名,而子包下的类名还是会被混淆;两颗星表示把本包和所含子包下的类名都保持;
-keep class com.dengdongqi.test.**
-keep class com.dengdongqi.test.*
#保持类名,又保持类里面的具体方法和变量命名不被混淆
-keep class com.dengdongqi.test.** {*;}
#dont 不要,例如
-dontwarn:表示不要提示警告
#ignore 忽略,例如
-ignorewarning:表示忽略警告
#关闭压缩
-dontshrink
# 不优化
-dontoptimize
# 包名不使用大小写混合 aA Aa
-dontusemixedcaseclassnames
# 不混淆第三方引用的库
-dontskipnonpubliclibraryclasses
# 不做预校验
-dontpreverify
二、规则
1.反射用到的类不混淆
2.JNI方法不混淆
3.AndroidMainfest中的类不混淆
4.四大组件和Application的子类和Framework层下所有的类默认不会进行混淆
5.Parcelable的子类和Creator静态成员变量不混淆,否则会产生android.os.BadParcelableException异常
6.使用GSON、fastjson等框架时,所写的JSON对象类不混淆,否则无法将JSON解析成对应的对象
7.使用第三方开源库或者引用其他第三方的SDK包时,需要在混淆文件中加入对应的混淆规则
8.有用到WEBView的JS调用也需要保证写的接口方法不混淆
9.如果使用了枚举要保证枚举不被混淆
10.数据库db类不要混淆
11.如果使用了自定义控件那么要保证它们不参与混淆