[备忘]如何使用AndResGuard资源压缩工具,缩小项目体积

  • 什么是AndResGuard(照搬)

AndResGuard是一个帮助你缩小APK大小的工具,他的原理类似Java Proguard,但是只针对资源。他会将原本冗长的资源路径变短,例如将res/drawable/wechat变为r/d/a。
AndResGuard不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除),可得到一个实现资源混淆后的apk(若在配置文件中输入签名信息,可自动重签名并对齐,得到可直接发布的apk)以及对应资源ID的mapping文件。
说明文档传送门

  • 项目地址

github

  • 使用记录

配置gradle demo
在项目根build.gradle当中

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.1.16'
    }
}

在app的build.gradle当中

apply plugin: 'AndResGuard'

紧接着在app的build.gradle当中,继续加入以下代码

andResGuard {
  // mappingFile = file("./resource_mapping.txt")
  mappingFile = null //指定旧的mapping文件,保证同一资源文件在不同版本混淆后的名称保持一致。若在命令行设置会覆盖config.xml中的信息。
  use7zip = true
  useSign = true
  // 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字
  keepRoot = false
  whiteList = [
      // 你的图标
      "R.drawable.icon",
      // for fabric
      "R.string.com.crashlytics.*",
      // for umeng update
      "R.string.umeng*",
      "R.string.UM*",
      "R.string.tb_*",
      "R.layout.umeng*",
      "R.layout.tb_*",
      "R.drawable.umeng*",
      "R.drawable.tb_*",
      "R.anim.umeng*",
      "R.color.umeng*",
      "R.color.tb_*",
      "R.style.*UM*",
      "R.style.umeng*",
      "R.id.umeng*",
      // 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",
      // umeng share for facebook
      "R.layout.*facebook*",
      "R.id.*facebook*",
      // umeng share for messager
      "R.layout.*messager*",
      "R.id.*messager*",
      // umeng share commond
      "R.id.progress_bar_parent",
      "R.id.webView"
  ]
  compressFilePattern = [
      "*.png",
      "*.jpg",
      "*.jpeg",
      "*.gif",
      "resources.arsc"
  ]
   sevenzip {
       artifact = 'com.tencent.mm:SevenZip:1.1.16'
       //path = "/usr/local/bin/7za"
  }
}

在白名单中你可以根据项目实际情况进行配置
上面所列更多详细参数描述,请看这

  • 到这就算把该工具应用到项目当中,如何打包才能生效?

Android Studio 最简单的方式就是

《[备忘]如何使用AndResGuard资源压缩工具,缩小项目体积》 图1

还有命令行模式

./gradlew resguard

《[备忘]如何使用AndResGuard资源压缩工具,缩小项目体积》 图2

  • 运行后的apk路径在哪?

项目名称\app\build\outputs\apk\AndResGuard_app-release\很多文件

效果图

《[备忘]如何使用AndResGuard资源压缩工具,缩小项目体积》 生成的文件列表
《[备忘]如何使用AndResGuard资源压缩工具,缩小项目体积》 右键解压后,可以看到r文件夹
《[备忘]如何使用AndResGuard资源压缩工具,缩小项目体积》 里面的文件全部混淆

如有错误请提出,谢谢

    原文作者:吴彦辉
    原文地址: https://www.jianshu.com/p/4cc3a4206ecc
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞