使用AndResGuard压缩资源,减少APK体积

  • 什么是AndResGuard

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

  • 使用方法

配置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",
      // 你的项目名字
      "R.string.com.crashlytics.*",
      // 友盟统计
      "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*",
      // 新浪图标
      "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",
      // facebook
      "R.layout.*facebook*",
      "R.id.*facebook*",
      // 短信验证
      "R.layout.*messager*",
      "R.id.*messager*",
      // share commond
      "R.id.progress_bar_parent",
      "R.id.webView"
  ]
  compressFilePattern = [
      "*.png",
      "*.jpg",
      "*.jpeg",
      "*.gif",
      "resources.arsc"
  ]
   sevenzip {
       //一般artifact与path中选一个,如果两个都选,会优先path
       artifact = 'com.tencent.mm:SevenZip:1.1.16'
       //path = "/usr/local/bin/7za" -linux
       //path = "C:\\Program Files\\7-Zip\\7za.exe" -window
  }
}
     在whiteList的配置中你可以根据项目实际情况进行配置

上面所列更多详细参数描述,请看这

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

Android Studio 最简单的方式就是


使用AndResGuard压缩资源,减少APK体积_第1张图片
Paste_Image.png

还有命令行模式

./gradlew resguard
  • 运行后的apk路径在哪?

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

效果图

使用AndResGuard压缩资源,减少APK体积_第2张图片
Paste_Image.png
使用AndResGuard压缩资源,减少APK体积_第3张图片
Paste_Image.png
使用AndResGuard压缩资源,减少APK体积_第4张图片
Paste_Image.png

如有错误请提出,谢谢!

你可能感兴趣的:(使用AndResGuard压缩资源,减少APK体积)