1.集成方式
1.在项目build.gradle中添加构建工具依赖地址:
dependencies {
//xxx
classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.16'
}
2.自定义 and_res_guard.gradle
脚本,然后再项目中添加引用 apply from: 'and_res_guard.gradle
apply plugin: 'AndResGuard'
andResGuard {
//白名单机制只作用于资源的specsName,不会keep住资源的路径。如果想keep住资源原有的物理路径,可以使用mappingFile
mappingFile = file("./resource_mapping.txt")
//对于发布于Google Play的APP,建议不要使用7Zip压缩,因为这个会导致Google Play的优化Patch算法失效.
use7zip = true
//sign
useSign = true
// 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字
keepRoot = false
// 设置这个值,会把arsc name列混淆成相同的名字,减少string常量池的大小
// fixedResName = "arg"
//白名单,使用三方sdk需要添加资源到白名单
whiteList = [
"R.mipmap.ic_launcher",
//https://docs.fabric.io/android/crashlytics/build-tools.html
// Umeng sdk
"R.anim.umeng*",
"R.string.umeng*",
"R.string.UM*",
"R.string.tb_*",
"R.layout.umeng*",
"R.layout.socialize_*",
"R.layout.*messager*",
"R.layout.tb_*",
"R.color.umeng*",
"R.color.tb_*",
"R.style.*UM*",
"R.style.umeng*",
"R.drawable.umeng*",
"R.drawable.tb_*",
"R.drawable.sina*",
"R.drawable.qq_*",
"R.drawable.tb_*",
"R.id.umeng*",
"R.id.*messager*",
"R.id.progress_bar_parent",
"R.id.socialize_*",
"R.id.webView",
]
//如果不是对APK size有极致的需求,请不要把添加进compressFilePattern
compressFilePattern = [
"*.png",
"*.jpg",
"*.jpeg",
"*.gif",
// "resources.arsc",
]
//在设置sevenzip时, 你只需设置artifact或path. 支持同时设置,总以path的值为优先.
sevenzip {
artifact = 'com.tencent.mm:SevenZip:1.2.17'
//path = "/usr/local/bin/7za"
}
//可选: 如果不设置则会默认覆盖assemble输出的apk
// finalApkBackupPath = "${project.rootDir}/final.apk"
//可选: 指定v1签名时生成jar文件的摘要算法 默认值为“SHA-1”
// digestalg = "SHA-256"
}
3.在Gradle的构建Tasks中会出现andresguard
任务,根据构建环境会构建出相应的apk
build目录如下
最终resource的资源名发生了改变