1.混淆的作用
利用Proguard或者R8工具,对代码进行重命名,并删掉没有被引用的类、字段或者方法。对无用资源进行删除。
2.混淆的用法
2.1 如何开启混淆
android {
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
只有在启用混淆的前提下开启资源压缩才会有效!
getDefaultProguardFile('proguard-android.txt') 方法可从 Android SDK tools/proguard/ 文件夹获取默认的 ProGuard规则文件,表示 Android 系统为我们提供的默认混淆规则文件。
proguard-rules.pro文件用于添加自定义 ProGuard 规则。默认情况下,该文件位于模块根目录。
我们一般在打 release 包时才启用混淆,因为混淆会增加额外的编译时间,所以不建议在 debug 模式下启用。
2.2 proguard与R8
proguard是用于java和android项目的混淆工具。
Android Gradle插件3.4.0或更高版本时,R8和Proguard 相比,R8 可以更快地缩减代码,同时改善输出大小,R8 默认处于启用状态,你可将以下代码添加到项目的 。gradle.properties 文件以停用 R8:
android.enableR8=false
2.3 自定义混淆
2.3.1 自定义要保持的代码
2.3.1.1 常用ProGuard规则
proguard中一共有三组六个keep关键字,很多人搞不清楚它们的区别,这里我们通过一个表格来直观地看下:
[图片上传失败...(image-554618-1577426814253)]
除此之外,proguard中的通