關(guān)于AndResGuard
AndResGuard是一個(gè)幫助你縮小APK大小的工具颗祝,他的原理類似Java Proguard蜕猫,但是只針對(duì)資源步藕。他會(huì)將原本冗長(zhǎng)的資源路徑變短,例如將res/drawable/wechat變?yōu)閞/d/a垫桂。
AndResGuard不涉及編譯過(guò)程,只需輸入一個(gè)apk(無(wú)論簽名與否粟按,debug版诬滩,release版均可,在處理過(guò)程中會(huì)直接將原簽名刪除)灭将,可得到一個(gè)實(shí)現(xiàn)資源混淆后的apk(若在配置文件中輸入簽名信息疼鸟,可自動(dòng)重簽名并對(duì)齊,得到可直接發(fā)布的apk)以及對(duì)應(yīng)資源ID的mapping文件宗侦。
項(xiàng)目地址:https://github.com/shwenzhang/AndResGuard
Gradle集成
- Project/build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.1.14'
}
}
- Module/build.gradle
apply plugin: 'com.android.application'
apply plugin: 'AndResGuard'
android {
...
}
dependencies {
...
}
andResGuard {
// mappingFile = file("./resource_mapping.txt")
mappingFile = null
use7zip = true
useSign = true
// 打開(kāi)這個(gè)開(kāi)關(guān)愚臀,會(huì)keep住所有資源的原始路徑,只混淆資源的名字
keepRoot = false
whiteList = [
// for your icon
"R.drawable.icon"
]
compressFilePattern = [
"*.png",
"*.jpg",
"*.jpeg",
"resources.arsc"
]
sevenzip {
artifact = 'com.tencent.mm:SevenZip:1.1.14'
//path = "/usr/local/bin/7za" --- Linux
//path = "D:\7za\7za.exe" --- Windows
}
}
如何使用
在Android Gradle Terminal中
- Windows
gradlew.bat resguardRelsese
- OS X or Linux
./gradlew reguardRelease
注意問(wèn)題
- mappingFile用于增量更新矾利,保持本次混淆與上次混淆結(jié)果一致姑裂;
- uss7zip為true時(shí),useSign必須為true男旗;
- useSign為true時(shí)舶斧,需要配置signConfig;
- whiteList添加在代碼內(nèi)部需要?jiǎng)討B(tài)獲取的資源id察皇;
- sevenzip可使用artifacr或path茴厉,path指本地安裝的7za(7zip命令行工具)。