Android 中开发SDK已经集成了ProGuard工具,开发者可以从SDK目录下的\tools\proguard目录中进行查看。并且使用gradle编译时已经可以根据配置进行混淆。
ProGuard是一个免费的Java类文件收缩,优化,混淆和预校验器。它可以检测并删除未使用的类,字段,方法和属性。它可以优化字节码,并删除未使用的指令。它可以将类、字段和方法使用短无意义的名称进行重命名。
简单的理解,就是一种映射以及一些优化;而这里讲到的去重,则是改变映射规则,同一个类,映射成两个功能相同但代码显示差别很大的类
首先看一下下面:
android {
......
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', 'main_dic.pro'
signingConfig signingConfigs.release
}
debug {
signingConfig signingConfigs.release
}
}
......
}
minifyEnabled true:进行开启混淆
proguardFiles:设置混淆规则;可以多个规则文件
getDefaultProguardFile('proguard-android-optimize.txt'):sdk中带混淆规则
在配置文件中,可以进行下面配置,进行配置字典,
-obfuscationdictionary dic.txt
-classobfuscationdictionary dic.txt
-packageobfuscationdictionary dic.txt
dic.txt即为字典文件;默认字典是abcd字母;为了加大阅读难度,应该尽可能0、o、O来进行混合;