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

相關文章
相關標籤/搜索