Android 包體積優化實戰

概述

用戶通常都不願意去下載一個比較大的程序,特別是不在 WIFI 的情況下。如果你的安裝包很小,用戶還是願意下載安裝體驗下的。現在市面上滿足某種需求的 App 通常都會有很多款,如何讓用戶願意下載你的 App 來體驗?安裝包越小,在 WIFI 情況下,極速下載安裝,開始體驗。在移動網絡情況下,包體積越小,用戶安裝的的可能性越大。所以安裝包大小對用戶的轉換率有很大的影響。接下來就和大家分享下我在實際中工作中對包體積優化的一些經驗。
 

APK 文件結構

既然是要優化 Android APK 安裝文件的大小,首要需要了解下 APK 文件的結構。將 APK 文件拖進 AndroidStudio 可以清楚的看到 APK 文件組成部分。APK 主要由以下幾部分組成:

META-INF/: 該文件夾下主要包含 CERT.SF 和 CERT.RSA 簽名文件, 以及 MANIFEST.MF 清單文件
assets/: 該文件夾主要包含 app 中的資產文件,在程序中通過 AssetManager 對象來獲取
res/: 該文件夾主要包含沒有被編譯進 resources.arsc 的文件
lib/: 該文件夾包含一些平臺的 so 庫, 如 armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, and mips.
resources.arsc: 該文件主要存放着編譯後的資源。主要存放着 res/values 目錄下的文件內容,打包工具會將該目錄下的 XML 內容(string、style)提取出來編譯成二進制格式。
classes.dex: 該文件主要包含能夠被 Dalvik/ART 虛擬機理解的 DEX 格式的 class 文件
AndroidManifest.xml: 該文件主要核心的 Android 清單文件,該文件使用 Android 的二進制 XML 格式。
優化手段

其實 APK 最核心的就兩個內容,圖片資源和代碼。所以包體積優化主要是從這兩方面入手。例如檢查 assets 目錄下是否有沒有用到的資源。一般來說很少會在 assets 目錄放一些沒用的資源,主要是集成第三方 SDK (如高德、Baidu地圖等)的時候需要放一些資源進去,比如圖片、音頻文件等。隨着項目的迭代,界面 UI 的風格和以前相比發生了很大的變化,那麼以前很多圖片資源也就不可用了,所以在 res 目錄下的可能會存在很多不用的圖片,這是我們清理未使用資源最重要的一個文件夾。除了圖片,然後就是 classes.dex 文件 了,一般我們自己的程序的業務代碼不會對包體積產生很大的影響,主要是使用了大量的第三方庫,以及集成公司內部其他團隊的一些 module ,可能這些 module 包含了大量我們用不到的代碼或者資源。

在優化之前,來看下我所做項目的安裝包大小爲 73437KB(71.7MB),爲後面做的優化好有一個對比,看看具體的優化幅度。

請大家轉至一下鏈接查看,本文轉載。


版權聲明:本文爲CSDN博主「Chiclaim」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/johnny901114/article/details/105189854

轉載地址:https://blog.csdn.net/johnny901114/article/details/105189854

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章