
要启用代码混淆,在build.gradle文件中的最简配置可能是这样的:
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
其中,「proguardFiles」属性用于配置「混淆规则文件」,而作为默认文件之一的「proguard-rules.pro」 ,则是在我们创建新模块时自动添加的,通常不包含任何规则,需要我们自己添加。
我们日常添加和维护混淆规则,通常也都是直接在 proguard-rules.pro 文件上进行的。
这样做的弊端就是:
- 随着引入模块的增加,日渐膨胀的 proguard-rules.pro 文件难以维护
- 各种规则胡填海塞,当出现因代码混淆导致的问题时,难以定位到具体的混淆规则并修复
解决这个问题的关键就是 proguardFiles 属性,该属性允许我们添加多个混淆规则文件,以此添加额外的混淆规则。
我们可以遵循单一职责原则,按照混淆规则大体上的分类,将混淆规则文件拆分为以下三个:
- 通用混淆规则文件(proguard-common.pro)
#-----------通用基本配置的混淆规则---------------
# 指定不去忽略非公共的库的类
-dontskipnonpubliclibraryclasses
# 指定不去忽略非公共的库的类的成员
-dontskipnonpubliclibraryclassmembers
# 保留了继承自Activity、Application、Fragment这些类的子类
-keep public class * <

本文介绍如何通过拆分proguard-rules.pro为通用、项目自定义和第三方SDK规则,简化混淆规则维护,提升问题定位效率。
最低0.47元/天 解锁文章
2100

被折叠的 条评论
为什么被折叠?



