×

AabResGuard Android aab文件资源混淆工具

消耗积分:2 | 格式:zip | 大小:6.11 MB | 2022-06-10

郝埃连

分享资料个

授权协议 Apache 2.0
开发语言 Kotlin Java
操作系统 Android
软件类型 开源软件

软件简介

AabResGuard 是一个针对 Android app bundle aab 文件的资源混淆工具,由字节跳动抖音 Android 团队开源。

资源混淆可以避免 Android 应用被轻松地恶意逆向分析破解,还可以减少 apk 文件的体积,但相应地也会降低代码的可读性。

特性

  • 资源去重: 对重复资源文件进行合并,缩减包体积。
  • 文件过滤: 支持对 bundle 包中的文件进行过滤,目前只支持 MATE-INFO/lib/ 路径下的过滤。
  • 白名单: 白名单中的资源,名称不予混淆。
  • 增量混淆: 输入 mapping 文件,支持增量混淆。
  • 文案删除: 输入按行分割的字符串文件,移除文案及翻译。

快速开始

  • 命令行工具: 支持命令行一键输入输出。
  • Gradle plugin: 支持 gradle plugin,使用原始打包命令执行混淆。

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()
 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !