怎樣減小 Android 應用包 60% 的大小?

簡評: 應用的大小也是用戶體驗的一個重要方面,而減小 Android 應用安裝包大小其實一點也不復雜。

對於移動應用來講,應用安裝包的大小固然是越小越好。特別是對於一些欠發達地區,你不但願用戶由於手機「存儲空間不足」而卸載你的應用。android

本文就介紹了幾個小技巧來有效減小 apk 的大小:web

首先,咱們先用 Android Studio 提供的 APK Analyser 工具來分析下咱們的 apk 文件:微信

apk

能夠看到佔空間最多的主要是三個部分:classes.dex, res 和 resources.arsc。app

  • classes.dex:包含有 Java 代碼的字節碼文件。
  • res:包含了資源文件,好比圖片、佈局文件等等。
  • resources.arsc:包含全部的值資源文件,如 strings, dimensions, styles, integers 等等。

classes.dex

classes.dex 文件的大小徹底取決於程序中方法數的多少。在上面展現的例子中,包含了 4392 個類和 29897 個方法。這個結果是默認沒有使用 proguard 的。咱們有兩個默認的 proguard 文件可使用:工具

從名字上就能夠看出,proguard-android-optimize.txt 是更加激進的 proguard 配置,包括和 proguard-android.txt 相同的 ProGuard 規則,但還包括其餘在字節碼一級(方法內和方法間)執行分析的優化,以進一步減少 APK 大小和幫助提升其運行速度。佈局

能夠像這樣來使用:gradle

release {
    //Enable the proguard
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), "proguard-rules.pro"

    //Other parameters
    debuggable false
    jniDebuggable false
    renderscriptDebuggable false
    signingConfig playStoreConfig //Add your own signing config
    pseudoLocalesEnabled false
    zipAlignEnabled true
}

經過設置 minifyEnabled 屬性爲 true,會告訴 proguard 刪除全部未使用的方法和指令,進一步的減小 .dex 文件的大小。優化

.dex
方法數從 29897 減小到了 15168,大小從 3.1MB 減小到了 1.98 MB。ui

res

對於 res 文件夾,一般佔空間最大的就是圖片了。若是你的 Android Studio 爲 2.3,而且項目的 minimum version 爲 18 或以上,應該使用 webp 而不是 png 圖片。webp 圖片有更小的體積,圖片質量尚未什麼損失。google

咱們能夠選中 drawable 和 mipmap 文件夾,右鍵後選擇 convert to webp,將圖片轉爲 webp 格式。

webp

轉換的結果:

res

咱們還能夠在 build.gradle 中設置 shrinkResources 屬性爲 true,這會在打包時刪除未使用的資源:

release{
  //...
  //...
  shrinkResources true
  //...
}

另外若是你的應用不須要支持國際化,那麼能夠設置 resConfigs 爲 "zh","en",即只支持中英文:

defaultConfig {
    //...
    //...
    //...

    resConfigs "zh","en"
}

這麼作是由於對於官方的 support library,默認是支持國際化的,也就是包含了不少不一樣語言的資源文件,咱們就能夠經過這樣設置來移除用不到的語言資源文件。

經過上面的設置,這個 App 的安裝包大小從 3.19MB 減小到了 1.89MB。固然還有不少其餘的減小 apk 大小的技巧,但這裏介紹的技巧是徹底能夠做爲你項目的默認設置。


原文連接: How you can decrease application size by 60% (In only 5 minutes)?
推薦閱讀: Android Package Name vs. Application ID

歡迎關注微信號「極光開發者」

相關文章
相關標籤/搜索