AndroidResGuard使用记录
使用
https://github.com/shwenzhang/AndResGuard
项目的根 build.gradle 文件下加入下面的插件依赖:
classpath ‘com.tencent.mm:AndResGuard-gradle-plugin:1.2.18’项目 module 下的 build.gradle 文件下引入其插件:
apply plugin: ‘AndResGuard’加入 AndroidResGuard 的配置项(同上目录,直接添加)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36andResGuard {
// mappingFile = file("./resource_mapping.txt")
mappingFile = null
use7zip = true
useSign = true
// 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字
keepRoot = false
// 设置这个值,会把arsc name列混淆成相同的名字,减少string常量池的大小
fixedResName = "arg"
// 打开这个开关会合并所有哈希值相同的资源,但请不要过度依赖这个功能去除去冗余资源
mergeDuplicatedRes = true
whiteList = [
// for your icon
"R.drawable.icon",
// for fabric
"R.string.com.crashlytics.*",
// for google-services
"R.string.google_app_id",
"R.string.gcm_defaultSenderId",
"R.string.default_web_client_id",
"R.string.ga_trackingId",
"R.string.firebase_database_url",
"R.string.google_api_key",
"R.string.google_crash_reporting_api_key"
]
compressFilePattern = [
"*.png",
"*.jpg",
"*.jpeg",
"*.gif",
]
sevenzip {
artifact = 'com.tencent.mm:SevenZip:1.2.17'
//path = "/usr/local/bin/7za"
}
}点击右边的项目 Gradle/Tasks/andresguard/resguardRelease 即可生成资源混淆过的 APK
总结
主要是通过 短路径的优化,以达到 减少 resources.arsc、metadata 签名文件以及 ZIP 文件大小 的效果
使用了 7-Zip 的大字典优化,APK 的 整体压缩率可以提升 3% 左右,并且,它还支持针对 resources.arsc、PNG、JPG 以及 GIF 等文件进行强制压缩(在编译过程中,这些文件默认不会被压缩)