AabResGuard 是一个针对 Android app bundle aab 文件的资源混淆工具,由字节跳动抖音 Android 团队开源。
资源混淆可以避免 Android 应用被轻松地恶意逆向分析破解,还可以减少 apk 文件的体积,但相应地也会降低代码的可读性。
bundle
包中的文件进行过滤,目前只支持MATE-INFO/
、lib/
路径下的过滤。mapping
文件,支持增量混淆。gradle plugin
,使用原始打包命令执行混淆。在build.gradle(root project)
中进行配置
buildscript {
repositories {
mavenCentral()
jcenter()
google()
}
dependencies {
classpath "com.bytedance.android:aabresguard-plugin:0.1.0"
}}
在build.gradle(application)
中配置
apply plugin: "com.bytedance.android.aabResGuard"aabResGuard {
mappingFile = file("mapping.txt").toPath() // 用于增量混淆的 mapping 文件
whiteList = [ // 白名单规则
"*.R.raw.*", "*.R.drawable.icon"
]
obfuscatedBundleFileName = "duplicated-app.aab" // 混淆后的文件名称,必须以 `.aab` 结尾
mergeDuplicatedRes = true // 是否允许去除重复资源
enableFilterFiles = true // 是否允许过滤文件
filterList = [ // 文件过滤规则
"*/arm64-v8a/*", "META-INF/*"
]
enableFilterStrings = false // 过滤文案
unusedStringPath = file("unused.txt").toPath() // 过滤文案列表路径 默认在mapping同目录查找
languageWhiteList = ["en", "zh"] // 保留en,en-xx,zh,zh-xx等语言,其余均删除}
aabResGuard plugin
侵入了bundle
打包流程,可以直接执行原始打包命令进行混淆。
./gradlew clean :app:bundleDebug --stacktrace
通过gradle
获取混淆后的bundle
文件路径
def aabResGuardPlugin = project.tasks.getByName("aabresguard${VARIANT_NAME}")Path bundlePath = aabResGuardPlugin.getObfuscatedBundlePath()
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8