Android Gradle 资源混淆打包插件,兼容 AGP 7+ / AGP 8+, 支持对 APK 与 AAB(App Bundle)构建产物进行资源路径短名混淆。
插件已发布至 Maven Central,坐标如下:
| 说明 | 值 |
|---|---|
| Gradle 插件 ID | io.github.primer1889 |
| 版本 | 1.0.2(当前最新版本) |
| Maven 坐标(实现) | io.github.primer1889:resguard-plugin:1.0.2 |
1. settings.gradle.kts: 必须在 pluginManagement.repositories 中包含 mavenCentral()。本插件未发布到 Gradle Plugin Portal,若把 gradlePluginPortal() 放在 mavenCentral() 之前,可能导致解析失败;建议将 mavenCentral() 放在首位。
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
}
}2. app 模块 build.gradle.kts: 应用插件并写明版本。
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("io.github.primer1889") version "1.0.2"
}
//插件配置
resGuard {
enable = true
verbose = false
whiteList = setOf(
"AndroidManifest.xml",
"resources.arsc",
"resources.pb",
"META-INF/**",
"kotlin/**",
"assets/**",
"lib/**",
"res/mipmap*/ic_launcher*",
"res/drawable*/ic_launcher*"
)
}需要在根目录
gradle.properties禁用资源优化,生成的 APK 才会正常混淆
android.enableResourceOptimizations=false# 构建 APK(resGuardReleaseApk)
app:resguard:resGuardReleaseApk
# 构建 AAB(resGuardReleaseBundle)
app:resguard:resGuardReleaseBundle构建完成后,映射文件输出到:
app/build/outputs/resguard/<variantName>/apk-mapping.txt
app/build/outputs/resguard/<variantName>/bundle-mapping.txt
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enable |
Boolean |
true |
是否启用资源混淆 |
whiteList |
Set<String> |
内置启动图标默认项 | 资源混淆白名单 |
verbose |
Boolean |
false |
是否打印日志信息 |
白名单通配符:
?匹配单个字符(不含/)*匹配任意数量字符(不含/)**匹配任意层级目录
示例(APK / AAB 共用同一写法):
res/drawable*/ic_launcher*
res/*/mtrl_*
MIT