![](https://img.haomeiwen.com/i2068419/e977d44a86520955.png)
① dump.txt
介绍了APK中所有class文件的内部结构,虽然里面不知道写的什么
② mapping.txt
混淆代码对比,可以查看代码中的类、变量变成了什么
③ seeds.txt
没有被混淆代码对比
二、混淆的规则
1.一定要keep的内容
① Activity,Service,Receiver等在AndroidManifest.xml文件中注册的类
② JNI中的native方法
③ 反射使用的到的类、属性、方法名字
④ 自定义View
⑤ 第三方
⑥ Fragment
⑦ WebView addInterface 调用
⑧ Gson 实体类
2.关键字
“类”中关键字
① 访问修饰符(public protected private)
② 通配符
* 匹配任意长度字符,但是不包含分隔符 .
** 匹配任意长度字符,包含分隔符
③ extends 指定类的基类
④ implement 实现了某个接口的类
“成员”中关键字
① <init> 匹配构造方法
② <fields> 匹配所有的域
③ <methods>匹配所有方法
④ 通配符
* 匹配任意长度字符,但不包含分隔符 .
** 匹配任意长度字符,包含分隔符
*** 匹配任意参数类型
... 匹配任意长度的任意类型参数
⑤访问修饰符(public protected private)
3.keep的规则
① 不混淆某个类
-keep class com.xx.WXEntryActivity { *; }
如果只想不混淆某个类需要
-keep class com.xx.WXEntryActivity
② 不混淆某个包下所有的类
-keep class com.xx.** { *; }
③ 不混淆某个类的子类
-keep class * extends com.xx.** { *; }
④ 不混淆某个接口的实现
-keep class * implements com.xx.I { *; }
⑤ 不混淆所有类中包含了“model”的类
-keep class **.*model*.** { *; }
⑥ 不混淆某个类的构造方法
-keep class com.xx.WXEntryActivity {
public <init>();
}
⑦ 不混淆某个类的特定的方法test方法
-keep class com.xx.WXEntryActivity {
public void test(java.lang.String)
}
网友评论