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