AndResGuard個(gè)人感覺就是對(duì)資源文件路徑或者文件名進(jìn)行了重命名,稍微增加了反編譯人員查看資源的直觀性,稍微減小了apk的大??;
1):pro下的build.gradle下添加:classpath'com.tencent.mm:AndResGuard-gradle-plugin:1.2.20'

2):咱們app下新建一個(gè)文件隨你命名:xxx.grdle
并寫入:
applyplugin:'AndResGuard'
andResGuard{
? ? // keep住不混淆的資源原有的物理路徑 mappingFile = file("./resource_mapping.txt");
? ? //如果混淆全部的話,設(shè)置mappingFile = null
? ? mappingFile =null
? ? // 打開這個(gè)開關(guān),會(huì)keep住所有資源的原始路徑,只混淆資源的名字
? ? keepRoot =false
? ? // 設(shè)置這個(gè)值,會(huì)把a(bǔ)rsc name列混淆成相同的名字,減少string常量池的大小
? ? fixedResName ="arg"
? ? // 打開這個(gè)開關(guān)會(huì)合并所有哈希值相同的資源,但請(qǐng)不要過(guò)度依賴這個(gè)功能去除去冗余資源
? ? mergeDuplicatedRes =true
? ? // 啟用7zip壓縮。當(dāng)你使用v2簽名的時(shí)候,7zip壓縮是無(wú)法生效的。
? ? // use7zip 為true時(shí),useSign必須為true
? ? // 對(duì)于發(fā)布于 Google Play 的 APP,建議不要使用 7Zip 壓縮,因?yàn)檫@個(gè)會(huì)導(dǎo)致 Google Play 的優(yōu)化 Patch 算法失效
? ? use7zip =true
? ? // 啟用簽名,(需要配置signConfig)
? ? useSign =true
? ? // 保留不被混淆的資源文件,只作用于文件名,不會(huì)對(duì)路徑有影響,支持通配符:? * +
? ? //? 【+】代表1個(gè)或多個(gè),【?】代表0個(gè)或1個(gè),【*】代表0個(gè)或多個(gè)。如? "R.id.*",//任意id
? ? 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"
? ? ]
// 打包時(shí)是否壓縮這類文件,支持通配符:? * +
? ? compressFilePattern = [
"*.png",
"*.jpg",
"*.jpeg",
"*.gif",
//如果不是對(duì)APK size有極致的需求,請(qǐng)不要把resources.arsc添加進(jìn)compressFilePattern
//"resources.arsc"
? ? ]
//配置7Zip,只需設(shè)置 artifact 或 path;支持同時(shí)設(shè)置,但此時(shí)以 path 的值為優(yōu)先
? ? sevenzip{
? ? ? ? artifact ='com.tencent.mm:SevenZip:1.2.7'
? ? ? ? //path = "/usr/local/bin/7za"? //path指本地安裝的7za(7zip命令行工具)
? ? }
? ? /**
? ? * 可選: 如果不設(shè)置則會(huì)默認(rèn)覆蓋assemble輸出的apk
**/
? ? finalApkBackupPath ="${project.rootDir}/final.apk"
? ? /**
? ? *? 可選: 指定v1簽名時(shí)生成jar文件的摘要算法 默認(rèn)值為“SHA-1”
**/
? ? // digestalg = "SHA-256"
}
其中whiteList 為白名單
3):app下的build.gradle下申請(qǐng)?jiān)撐募?/b>

4)配置簽名并生成apk




后邊打包需要簽名需要在buildTypes配置:signingConfig signingConfigs.release
最后:


5)apktool進(jìn)行反編譯和通過(guò)修改apk后綴名查看資源文件:
1、修改apk文件,將.apk修改為.zip

會(huì)發(fā)現(xiàn)資源文件變?yōu)椴恢庇^的名稱了,查看得靠運(yùn)氣去點(diǎn)找自己需要的而已


2、通過(guò)apktool工具進(jìn)行反編譯:



資源名字都作了統(tǒng)一的處理,也不直觀了。