[備忘]如何使用AndResGuard資源壓縮工具,縮小項(xiàng)目體積

  • 什么是AndResGuard(照搬)

AndResGuard是一個(gè)幫助你縮小APK大小的工具,他的原理類似Java Proguard,但是只針對(duì)資源。他會(huì)將原本冗長(zhǎng)的資源路徑變短,例如將res/drawable/wechat變?yōu)閞/d/a。
AndResGuard不涉及編譯過程,只需輸入一個(gè)apk(無論簽名與否,debug版,release版均可,在處理過程中會(huì)直接將原簽名刪除),可得到一個(gè)實(shí)現(xiàn)資源混淆后的apk(若在配置文件中輸入簽名信息,可自動(dòng)重簽名并對(duì)齊,得到可直接發(fā)布的apk)以及對(duì)應(yīng)資源ID的mapping文件。
說明文檔傳送門

  • 項(xiàng)目地址

github

  • 使用記錄

配置gradle demo
在項(xiàng)目根build.gradle當(dāng)中

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

在app的build.gradle當(dāng)中

apply plugin: 'AndResGuard'

緊接著在app的build.gradle當(dāng)中,繼續(xù)加入以下代碼

andResGuard {
  // mappingFile = file("./resource_mapping.txt")
  mappingFile = null //指定舊的mapping文件,保證同一資源文件在不同版本混淆后的名稱保持一致。若在命令行設(shè)置會(huì)覆蓋config.xml中的信息。
  use7zip = true
  useSign = true
  // 打開這個(gè)開關(guān),會(huì)keep住所有資源的原始路徑,只混淆資源的名字
  keepRoot = false
  whiteList = [
      // 你的圖標(biāo)
      "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"
  }
}

在白名單中你可以根據(jù)項(xiàng)目實(shí)際情況進(jìn)行配置
上面所列更多詳細(xì)參數(shù)描述,請(qǐng)看這

  • 到這就算把該工具應(yīng)用到項(xiàng)目當(dāng)中,如何打包才能生效?

Android Studio 最簡(jiǎn)單的方式就是


圖1

還有命令行模式

./gradlew resguard
圖2
  • 運(yùn)行后的apk路徑在哪?

項(xiàng)目名稱\app\build\outputs\apk\AndResGuard_app-release\很多文件

效果圖

生成的文件列表
右鍵解壓后,可以看到r文件夾
里面的文件全部混淆

如有錯(cuò)誤請(qǐng)?zhí)岢觯x謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容