簡評:應用的大小也是用戶體驗的一個重要方面,而減小 Android 應用安裝包大小其實一點也不復雜。android
對於移動應用來講,應用安裝包的大小固然是越小越好。特別是對於一些欠發達地區,你不但願用戶由於手機「存儲空間不足」而卸載你的應用。web
本文就介紹了幾個小技巧來有效減小 apk 的大小:bash
首先,咱們先用 Android Studio 提供的 APK Analyser 工具來分析下咱們的 apk 文件:
app
classes.dex 文件的大小徹底取決於程序中方法數的多少。在上面展現的例子中,包含了 4392 個類和 29897 個方法。這個結果是默認沒有使用 proguard 的。咱們有兩個默認的 proguard 文件可使用:ide
從名字上就能夠看出,proguard-android-optimize.txt 是更加激進的 proguard 配置,包括和 proguard-android.txt 相同的 ProGuard 規則,但還包括其餘在字節碼一級(方法內和方法間)執行分析的優化,以進一步減少 APK 大小和幫助提升其運行速度。工具
能夠像這樣來使用:佈局
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 文件的大小。
gradle
對於 res 文件夾,一般佔空間最大的就是圖片了。若是你的 Android Studio 爲 2.3,而且項目的 minimum version 爲 18 或以上,應該使用 webp 而不是 png 圖片。webp 圖片有更小的體積,圖片質量尚未什麼損失。優化
咱們能夠選中 drawable 和 mipmap 文件夾,右鍵後選擇 convert to webp,將圖片轉爲 webp 格式。
ui
咱們還能夠在 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)?
極光日報,極光開發者 的 Side Project,天天導讀三篇國外技術類文章,歡迎關注。