-
什么是AndResGuard(照搬)
AndResGuard是一個(gè)幫助你縮小APK大小的工具,他的原理類似Java Proguard,但是只針對(duì)資源。他會(huì)將原本冗長(zhǎng)的資源路徑變短,例如將res/drawable/wechat變?yōu)閞/d/a。
AndResGuard不涉及編譯過程,只需輸入一個(gè)apk(無論簽名與否,debug版,release版均可,在處理過程中會(huì)直接將原簽名刪除),可得到一個(gè)實(shí)現(xiàn)資源混淆后的apk(若在配置文件中輸入簽名信息,可自動(dòng)重簽名并對(duì)齊,得到可直接發(fā)布的apk)以及對(duì)應(yīng)資源ID的mapping文件。
說明文檔傳送門
-
項(xiàng)目地址
-
使用記錄
配置gradle demo
在項(xiàng)目根build.gradle當(dāng)中
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.1.16'
}
}
在app的build.gradle當(dāng)中
apply plugin: 'AndResGuard'
緊接著在app的build.gradle當(dāng)中,繼續(xù)加入以下代碼
andResGuard {
// mappingFile = file("./resource_mapping.txt")
mappingFile = null //指定舊的mapping文件,保證同一資源文件在不同版本混淆后的名稱保持一致。若在命令行設(shè)置會(huì)覆蓋config.xml中的信息。
use7zip = true
useSign = true
// 打開這個(gè)開關(guān),會(huì)keep住所有資源的原始路徑,只混淆資源的名字
keepRoot = false
whiteList = [
// 你的圖標(biāo)
"R.drawable.icon",
// for fabric
"R.string.com.crashlytics.*",
// for umeng update
"R.string.umeng*",
"R.string.UM*",
"R.string.tb_*",
"R.layout.umeng*",
"R.layout.tb_*",
"R.drawable.umeng*",
"R.drawable.tb_*",
"R.anim.umeng*",
"R.color.umeng*",
"R.color.tb_*",
"R.style.*UM*",
"R.style.umeng*",
"R.id.umeng*",
// umeng share for sina
"R.drawable.sina*",
// for google-services.json
"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",
// umeng share for facebook
"R.layout.*facebook*",
"R.id.*facebook*",
// umeng share for messager
"R.layout.*messager*",
"R.id.*messager*",
// umeng share commond
"R.id.progress_bar_parent",
"R.id.webView"
]
compressFilePattern = [
"*.png",
"*.jpg",
"*.jpeg",
"*.gif",
"resources.arsc"
]
sevenzip {
artifact = 'com.tencent.mm:SevenZip:1.1.16'
//path = "/usr/local/bin/7za"
}
}
在白名單中你可以根據(jù)項(xiàng)目實(shí)際情況進(jìn)行配置
上面所列更多詳細(xì)參數(shù)描述,請(qǐng)看這
-
到這就算把該工具應(yīng)用到項(xiàng)目當(dāng)中,如何打包才能生效?
Android Studio 最簡(jiǎn)單的方式就是
圖1
還有命令行模式
./gradlew resguard
圖2
-
運(yùn)行后的apk路徑在哪?
項(xiàng)目名稱\app\build\outputs\apk\AndResGuard_app-release\很多文件
效果圖
生成的文件列表
右鍵解壓后,可以看到r文件夾
里面的文件全部混淆