Android開發優化之Apk瘦身優化指南
瞭解APK結構
在討論如何縮減應用的大小之前,需要瞭解應用APK的結構。APK文件是由一個Zip壓縮文件組成,其中包含構成應用的所有文件。其中包括Java類文件、資源文件及已編譯資源的文件。
APK 包含以下目錄:
- META-INF/ :包含 CERT.SF 和 CERT.RSA 簽名文件,以及 MANIFEST.MF 清單文件。
- assets/ :包含應用的資源;應用可以使用 AssetManager 對象檢索這些資源。
- res/ :包含未編譯到 resources.arsc 中的資源(圖片、音視頻等)。
- lib/ :包含特定於處理器軟件層的已編譯代碼。此目錄包含每種平臺類型的子目錄,如 armeabi 、armeabi-v7a 、 arm64-v8a 、 x86 、 x86_64 和 mips 。
APK 還包含以下文件。在這些文件中,隻有 AndroidManifest.xml 是必需的。
- resources.arsc :包含已編譯的資源。此文件包含 res/values/ 文件夾的所有配置中的 XML 內容。打包工具會提取此 XML 內容,將其編譯為二進制文件形式,並壓縮內容。此內容包括語言字符串和樣式,以及未直接包含在 resources.arsc 文件中的內容(例如佈局文件和圖片)的路徑。
- classes.dex :包含以 Dalvik/ART 虛擬機可理解的 DEX 文件格式編譯的類。
- AndroidManifest.xml :包含核心 Android 清單文件。此文件列出瞭應用的名稱、版本、訪問權限和引用的庫文件。該文件使用 Android的二進制XML文件
Android Size Analyzer
Android Size Analyzer 工具可輕松地發現和實施多種縮減應用大小的策略。
首先在 Android Studio 中的插件市場下載安裝 Android Size Analyzer 插件。安裝插件後,從菜單欄中依次選擇 Analyze > Analyze App Size,對當前項目運行應用大小分析。分析瞭項目後,系統會顯示一個工具窗口,其中包含有關如何縮減應用大小的建議。
移除未使用的資源
APK瘦身關鍵就在一個字:刪!沒用的就刪瞭。
啟用資源縮減 (不打包)
如果在應用的 build.gradle 文件中啟用瞭資源縮減: shrinkResources ,則 Gradle 在打包APK時可以自動忽略未使用資源。 資源縮減隻有在與代碼縮減: minifyEnabled 配合使用時才能發揮作用。在代碼縮減器移除所有不使用的代碼後,資源縮減器便可確定應用仍要使用的資源 。
android { // Other settings buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
動態庫打包配置
so文件是由ndk編譯出來的動態庫,是 c/c++ 寫的,所以不是跨平臺的。ABI 是應用程序二進制接口簡稱(Application Binary Interface),定義瞭二進制文件(尤其是.so文件)如何運行在相應的系統平臺上,從使用的指令集,內存對齊到可用的系統函數庫。在Android 系統中,每一個CPU架構對應一個ABI,目前支持的有:armeabi-v7a,arm64- v8a,x86,x86_64。目前市面上手機設備基本上都是arm架構, armeabi-v7a 幾乎能兼容所有設備。因此可以配置:
android{ defaultConfig{ ndk{ abiFilters "armeabi-v7a" } } }
對於第三方服務,如百度地圖、Bugly等會提供全平臺的cpu架構。進行瞭上面的配置之後,表示隻會把armeabi-v7a打包進入Apk。從而減少APK大小。
總結
到此這篇關於Android開發優化之Apk瘦身優化指南的文章就介紹到這瞭,更多相關Android Apk瘦身優化內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 一款Android APK的結構構成解析
- Android Studio工程導入及坑的解決
- idea下Android各目錄所代表的含義介紹
- Android多渠道打包神器ProductFlavor詳解
- 獲取Android簽名MD5的方式實例詳解