dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.17'
}
複製代碼
APP模塊中配置文件中的配置:android
apply plugin: 'AndResGuard'
andResGuard {
// 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"
}
}
複製代碼
其中whiteList(白名單)中指定不須要進行混淆的資源路徑規則,一些經常使用的三方SDK白名單設置:git
AndResGuard白名單github
集成完AndResGuard後,在app的gradle的tasks中,多了一個叫作andresguard的task, 下面會有resguardDebug resguardRelease點擊以後運行打包web
運行完以後的apk 會在app目錄下的/build/output/apk/release/AndResGuard_{apk_name}/ 文件夾中找到混淆後的Apk 反編譯以後會看到 res文件夾變爲r,且裏面的目錄名稱都已是混淆過的。api