android 资源文件混淆

本文详细介绍了如何在Android项目中集成AndResGuard插件,针对AGP7.2.2及以上版本的特定要求,设置了混淆规则和资源白名单,以便在编译时对资源进行保护和优化。
摘要由CSDN通过智能技术生成

集成到源码中编译的时候混淆

!!!AGP7.0以上有坑 版本必须是1.2.23

  1. 在项目的build.gradle中添加如下
buildscript {
    ext.kotlin_version = "1.4.31"
    repositories {
        google()
        jcenter()
        maven {
            url "https://s01.oss.sonatype.org/content/repositories/snapshots/"
        }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:7.2.2"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
//        classpath "com.bytedance.android:aabresguard-plugin:0.1.0"
        classpath 'io.github.leon406:AndResGuard-gradle-plugin:1.2.23'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
  1. 在app目录下新建脚本and_res_guard.gradle
apply plugin: 'AndResGuard'

andResGuard {
    //mappingFile = file("./resource_mapping.txt")
    mappingFile = null
    use7zip = true
    useSign = true
    keepRoot = false
    compressFilePattern = [
            "*.png",
            "*.jpg",
            "*.jpeg",
            "*.gif",
            "*.xml",
            "*.json",
            "*.html",
//            "assets.arsc",
            "resources.arsc"
    ]
    whiteList = [
            // your icon
            "R.mipmap.ic_launcher",
            "R.mipmap.ic_launcher_round",
            // for fabric
            "R.string.com.crashlytics.*",
            // for umeng update
            "R.string.tb_*",
            "R.layout.tb_*",
            "R.drawable.tb_*",
            "R.drawable.u1*",
            "R.drawable.u2*",
            "R.color.tb_*",
            // umeng share for sina
            "R.drawable.sina*",
            // for google-services.json
            "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",

            //友盟
            "R.string.umeng*",
            "R.string.UM*",
            "R.layout.umeng*",
            "R.drawable.umeng*",
            "R.id.umeng*",
            "R.anim.umeng*",
            "R.color.umeng*",
            "R.style.*UM*",
            "R.style.umeng*",

            //融云
            "R.drawable.u*",
            "R.drawable.rc_*",
            "R.string.rc_*",
            "R.layout.rc_*",
            "R.color.rc_*",
            "R.id.rc_*",
            "R.style.rc_*",
            "R.dimen.rc_*",
            "R.array.rc_*"
    ]

    sevenzip {
        artifact = 'com.tencent.mm:SevenZip:1.2.10'
        //path = "/usr/local/bin/7za"
    }
    /**
     * 可选: 如果不设置则会默认覆盖assemble输出的apk
     **/
    //finalApkBackupPath = "${project.rootDir}/final.apk"
}

  1. 在app/build.gradle中引用第二步的脚本
apply from: 'and_res_guard.gradle'
  1. 其他环境配置
grade:gradle-7.3.3-bin.zip 
classpath "com.android.tools.build:gradle:7.2.2"
jdk:11
  1. 执行编译
    在这里插入图片描述
    附上demo:demo

通过脚本给apk文件资源混淆

  1. 环境搭建
    7zip:下载后添加到环境变量中
    在这里插入图片描述
    在这里插入图片描述

  2. 安装jdk
    在这里插入图片描述

  3. zipalign android studio sdk中有

  4. 将apk文件添加到脚本文件目录下并命名为input.apk然后执行build_apk.bat 执行完成后会生成一个新的apk
    在这里插入图片描述

在这里插入图片描述

注意点

1,如果应用中引用了一些三方sdk 需要在config.xml中whitelist过滤
2,重新打包apk需要先zipalign 然后再签名(脚本默认已经这么做了)

脚本地址:地址

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值