Android混淆规则记录

一 、高频率使用语法

#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.如果使用了自定义控件那么要保证它们不参与混淆



猜你喜欢

转载自blog.csdn.net/dengdongqi/article/details/79677782