APK优化(九)之资源res文件混淆和7ZIP压缩

资源混淆配合7zip压缩,减小apk大小,增加破解难度。

通过resource.arsc文件格式,混淆步骤为:

  1. 解析arsc文件,主要为全局与资源名字符串池
  2. 修改字符串池中的字符串,以无意义的a/b替换
  3. 修改apk中的res目录资源文件名
  4. 打包(7zip)、对齐、签名

微信资源混淆打包工具AndResGuard或者美团资源混淆打包工具。
7zip压缩参考:
http://blog.rcant.com/2017/03/19/others/android-andresguard/

AndResGuard使用

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

classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.15'

2.在app目录下,创建and_res_guard.gradle文件(也可以直接将内容写入build.gradle文件)

apply plugin: 'AndResGuard'
andResGuard {
    // mappingFile = file("./resource_mapping.txt")
    mappingFile = null
    use7zip = true
    useSign = true
    // 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字
    keepRoot = false
    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",

        // 我在实际项目中遇到第三方使用getIdentifier访问的资源的问题,将指定的资源放入白名单后,虽然不闪退了,但还是会出现无法理解的错误。所以只好全部id都放入白名单
         "R.id.*"
    ]
    compressFilePattern = [
        "*.png",
        "*.jpg",
        "*.jpeg",
        "*.gif",
    ]
    sevenzip {
         artifact = 'com.tencent.mm:SevenZip:1.2.15'
         //path = "/usr/local/bin/7za"
    }

    /**
    * 可选: 如果不设置则会默认覆盖assemble输出的apk
    **/
    // finalApkBackupPath = "${project.rootDir}/final.apk"

    /**
    * 可选: 指定v1签名时生成jar文件的摘要算法
    * 默认值为“SHA-1”
    **/
    // digestalg = "SHA-256"
}

3.在build.gradle文件中引用

apply from: 'and_res_guard.gradle'

集成完AndResGuard后,在app的gradle的tasks中,多了一个叫做andresguard的task
打debug包: 执行resguardDebug指令;
打preview包: 执行resguardPreview指令;
打release包 : 执行resguardRelease指令。

双击执行resguardRelease指令,执行完毕后,可以在app目录下的/build/output/apk/release/AndResGuard_{apk_name}/ 文件夹中找到混淆后的Apk即可。

APK优化(一)之SVG--------------解决大量的套图问题
APK优化(二)之Tint着色器-------------减少apk体积
APK优化(三)之资源打包配置----resources.arsc
APK优化(四)之.so动态库打包配置
APK优化(五)之移除无用资源,物理删除
APK优化(六)之代码混淆
APK优化(七)之启用shrinkResources资源缩减 ,不需要物理上的删除
APK优化(八)之启用webp转换插件-----图片变小
APK优化(九)之资源res文件混淆和7ZIP压缩

你可能感兴趣的:(APK优化(九)之资源res文件混淆和7ZIP压缩)