怎樣減少 Android 應(yīng)用包 60% 的大小砂竖?

簡評: 應(yīng)用的大小也是用戶體驗的一個重要方面真椿,而減少 Android 應(yīng)用安裝包大小其實一點也不復(fù)雜。

對于移動應(yīng)用來說乎澄,應(yīng)用安裝包的大小當(dāng)然是越小越好突硝。特別是對于一些欠發(fā)達(dá)地區(qū),你不希望用戶因為手機(jī)「存儲空間不足」而卸載你的應(yīng)用置济。

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

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

apk

可以看到占空間最多的主要是三個部分:classes.dex, res 和 resources.arsc浙于。

  • classes.dex:包含有 Java 代碼的字節(jié)碼文件护盈。
  • res:包含了資源文件,比如圖片羞酗、布局文件等等腐宋。
  • resources.arsc:包含所有的值資源文件,如 strings, dimensions, styles, integers 等等檀轨。

classes.dex

classes.dex 文件的大小完全取決于程序中方法數(shù)的多少胸竞。在上面展示的例子中,包含了 4392 個類和 29897 個方法参萄。這個結(jié)果是默認(rèn)沒有使用 proguard 的卫枝。我們有兩個默認(rèn)的 proguard 文件可以使用:

從名字上就可以看出,proguard-android-optimize.txt 是更加激進(jìn)的 proguard 配置拧揽,包括和 proguard-android.txt 相同的 ProGuard 規(guī)則剃盾,但還包括其他在字節(jié)碼一級(方法內(nèi)和方法間)執(zhí)行分析的優(yōu)化腺占,以進(jìn)一步減小 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
}

通過設(shè)置 minifyEnabled 屬性為 true,會告訴 proguard 刪除所有未使用的方法和指令衰伯,進(jìn)一步的減少 .dex 文件的大小铡羡。

.dex

方法數(shù)從 29897 減少到了 15168,大小從 3.1MB 減少到了 1.98 MB意鲸。

res

對于 res 文件夾烦周,通常占空間最大的就是圖片了。如果你的 Android Studio 為 2.3怎顾,并且項目的 minimum version 為 18 或以上读慎,應(yīng)該使用 webp 而不是 png 圖片。webp 圖片有更小的體積槐雾,圖片質(zhì)量還沒有什么損失夭委。

我們可以選中 drawable 和 mipmap 文件夾,右鍵后選擇 convert to webp募强,將圖片轉(zhuǎn)為 webp 格式株灸。

webp

轉(zhuǎn)換的結(jié)果:

res

我們還可以在 build.gradle 中設(shè)置 shrinkResources 屬性為 true崇摄,這會在打包時刪除未使用的資源:

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

另外如果你的應(yīng)用不需要支持國際化,那么可以設(shè)置 resConfigs 為 "zh","en"慌烧,即只支持中英文:

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

    resConfigs "zh","en"
}

這么做是因為對于官方的 support library逐抑,默認(rèn)是支持國際化的,也就是包含了很多不同語言的資源文件屹蚊,我們就可以通過這樣設(shè)置來移除用不到的語言資源文件厕氨。

通過上面的設(shè)置,這個 App 的安裝包大小從 3.19MB 減少到了 1.89MB淑翼。當(dāng)然還有很多其他的減少 apk 大小的技巧腐巢,但這里介紹的技巧是完全可以作為你項目的默認(rèn)設(shè)置。


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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玄括,一起剝皮案震驚了整個濱河市冯丙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌遭京,老刑警劉巖胃惜,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異哪雕,居然都是意外死亡船殉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門斯嚎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來利虫,“玉大人,你說我怎么就攤上這事堡僻】繁梗” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵钉疫,是天一觀的道長硼讽。 經(jīng)常有香客問我,道長牲阁,這世上最難降的妖魔是什么固阁? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮城菊,結(jié)果婚禮上备燃,老公的妹妹穿的比我還像新娘。我一直安慰自己凌唬,他們只是感情好并齐,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般冀膝。 火紅的嫁衣襯著肌膚如雪唁奢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天窝剖,我揣著相機(jī)與錄音麻掸,去河邊找鬼。 笑死赐纱,一個胖子當(dāng)著我的面吹牛脊奋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疙描,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼诚隙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了起胰?” 一聲冷哼從身側(cè)響起久又,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎效五,沒想到半個月后地消,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡畏妖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年脉执,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片戒劫。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡半夷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迅细,到底是詐尸還是另有隱情巫橄,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布疯攒,位于F島的核電站嗦随,受9級特大地震影響列荔,放射性物質(zhì)發(fā)生泄漏敬尺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一贴浙、第九天 我趴在偏房一處隱蔽的房頂上張望砂吞。 院中可真熱鬧,春花似錦崎溃、人聲如沸蜻直。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽概而。三九已至呼巷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間赎瑰,已是汗流浹背王悍。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留餐曼,地道東北人压储。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像源譬,于是被迫代替她去往敵國和親集惋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

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