美文网首页Android收藏集
APK优化(九)之资源res文件混淆和7ZIP压缩

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

作者: 晓晓桑 | 来源:发表于2019-02-27 20:36 被阅读124次

资源混淆配合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压缩

    资源混淆配合7zip压缩,减小apk大小,增加破解难度。 通过resource.arsc文件格式,混淆步骤为:解析...

  • 15 性能优化-Apk瘦身-代码混淆和资源压缩

    Android apk瘦身最佳实践(二):代码混淆和资源压缩 要尽可能减小 APK 文件,我们应该启用压缩来移除发...

  • APK体积减少攻略

    APK体积减少攻略 整体7zip压缩 将APK包解压到文件夹 全选所有文件,右键“添加到压缩包”3.“压缩格式”必...

  • apk资源混淆及压缩的使用

    目的 启用资源文件res混淆及压缩的好处: 增加破解难度,用无意义的字母替换掉资源文件目录及名称,如把res/dr...

  • APK加固方式

    一:代码混淆 Proguard是一个代码优化和混淆工具。能够提供对Java类文件的压缩、优化、混淆,和预校验。压缩...

  • Android优化

    压缩APK文件 优化UI 内存优化 优化代码查看代码逻辑,提取通用代码设计模式 压缩APK文件 Android s...

  • 安装包大小优化

    1.常规的安装包优化 图片压缩 资源动态加载 Lint工具 极限压缩 Proguard 混淆 2.资源文件再压缩 ...

  • APK瘦身

    7zip压缩apk 解压 apk : 7z x -tzip $1压缩 apk : 7z a -tzip targe...

  • Android实践:使用ProGuard压缩和混淆Apk

    本文主要讨论对apk文件的压缩和混淆中的细节问题以及分析在压缩混淆过程中遇到的问题的原因. ProGuard压缩混...

  • CocosCreator-总结

    包体优化 删除无用代码 定期清理,删除重复和未引用的资源 压缩音效文件,尽可能少占用空间 资源尽量放到res目录下...

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/nrlquqtx.html