1. 程式人生 > >Android減小Apk包大小的常用方法

Android減小Apk包大小的常用方法

我們之所以要減小apk的大小,一方面是為了節省使用者手機的記憶體;另一方面是為了節省使用者在App安裝和版本升級時的流量;
直接減小apk檔案大小的方法:
1.使用圖片壓縮工具;
目前常用的工具是:
ImageOptim,壓縮效果很好,使用預設配置即可。但是僅有MAC版的;
Tinypng,官網:https://tinypng.com/,也非常簡單易用,壓縮效果也很好。
2.刪除無用的資原始檔以及程式碼;
在Eclipse開發環境下通過Android Lint工具可以找出專案中無用的資源及class檔案;在Android Studio環境下,通過右鍵->Analyze->Run Inspection By Name ->輸入”unUsed resource”進行查詢;
3.進行混淆。
proguard不僅有增加程式碼安全性的作用,在混淆過程中還會對程式碼進行shrink等瘦身優化,這會進一步減小apk的大小;詳見官網:

https://stuff.mit.edu/afs/sipb/project/android/sdk/android-sdk-linux/tools/proguard/docs/index.html#manual/introduction.html
4.只保留armeabi目錄下的so檔案
這是一個有爭議的方法。在執行效能、手機平臺相容性和apk大小之間的一個取捨和抉擇。
具體方法是:在app的Build.gradle里加上如下配置:詳見:關於Android的.so檔案你所需要知道的
android {

splits {
abi {
enable true
reset()
include ‘armeabi’//’x86’, ‘x86_64’, ‘armeabi-v7a’, ‘arm64-v8a’, select ABIs to build APKs for
universalApk false //generate an additional APK that contains all the ABIs
}
}

}
這樣打出的apk包就只包含了armeabi目錄下的so檔案。
從App開發的角度說,還有如下方法可以減小apk的大小:
5.UI團隊在設計頁面時,可以從設計元素的簡潔性以及複用性上多下功夫,從源頭上減少圖片資源的大小和數目;
6.apk進行版本升級時,可以採用增量升級的方式,極大地減小下載升級包帶來的流量損耗;例如阿里雲的hotfix,但是它有一個問題是:它增量更新只適用於application初始化之後程式碼進行的修改,如果你修改了manifest,gradle等檔案,就需要進行新版本釋出,進行全量更新。
7.apk本身可以將功能進行外掛化拆分,使用者不常用的功能,在使用者使用時再進行下載和安裝。這個推薦360的replugin,大家可以去官網看下官方文件,或者giuhub上下載
https://github.com/Qihoo360/RePlugin/tree/master/replugin-sample