Android开发中掌握混淆规则是必备技能之一。
混淆方式
主module中统一配置
这种情况简单,针对自己项目代码和三方库代码编写混淆规则即可。当取消某些module依赖时,需要剔除响应的混淆规则,较麻烦。
各module单独配置
随着项目不断扩大,多个module同时存在的项目已很普遍。
- 主module配置一些通用的混淆规则。
子module在gradle中配置consumerProguardFiles属性来指定混淆文件就可以。
123456// 子模块单独配置混淆规则buildTypes {release {consumerProguardFiles 'proguard-rules.pro'}}
proguard使用及规则
主module开启混淆配置
|
|
通用规则
|
|
哪些需要添加keep规则
- 三方库
- 反射代码
- JNI native代码
- webview js注入方法相关类
自定义规则及语法
- 不混淆某个类
|
|
- 不混淆某个包所有的类
|
|
- 不混淆某个类的子类
|
|
- 不混淆所有类名中包含了“model”的类及其成员
|
|
- 不混淆某个接口的实现
|
|
- 不混淆某个类的构造方法
|
|
- 不混淆某个类的内部类
|
|