Android 资源混淆 AndResGuard 使用方式

AndResGuard使用

项目根目录下build.gradle中,添加插件的依赖:

dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.17'

  
    }
    
复制代码

app模块中build.gradle中,添加相关配置

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的使用

集成完AndResGuard后,在app的gradle的tasks中,多了一个叫作andresguard的task, 下面会有resguardDebug resguardRelease点击以后运行打包web

运行完以后的apk 会在app目录下的/build/output/apk/release/AndResGuard_{apk_name}/ 文件夹中找到混淆后的Apk 反编译以后会看到 res文件夹变为r,且里面的目录名称都已是混淆过的。api

相关文章
相关标签/搜索