我們述說了Apk瘦身從哪些方面入手,哪些地方值得我們去發現問題以及解決問題,這篇文章我們總結下常規性操作,包括grade打包配置。
1、資源文件優化
a、項目中可選擇對主流的dpi支持,例如我們項目目前選擇xxhdpi作為對標,對於大圖片,可以通過網絡加載方式執行。
defaultConfig {
resConfigs "zh" //表示只使用中文
resConfigs "xxhdpi" // 表示只是用xxhdpi目錄下的資源文件
}b、項目中的圖片以及動圖採用webp格式。

c、對於圖片繪製功底比較的同學,可多採用svg、shape、代碼繪製、NinePatch格式(.9格式)等方式來替代圖片資源。
d、資源中盡量使用android系統本身存在的資源,例如字體(實在要用,可到網上尋找簡化版資源)
e、對於大資源採用網絡加載方式,例如視頻、音頻、大圖、gif、json文件等,當然這種情況要充分考慮網絡加載失敗的情況,免得業務受阻。
f、在我們業務中,涉及到了so庫,並且這些so庫佔比很很大,我們可以對部分so庫執行動態加載方案。
2、開啟minifyEnable
它的作用不僅僅是混淆代碼,還有壓縮優化的功能,他會遍歷所有代碼並找出沒有引用到的代碼,這些代碼不會生成在apk中,混淆的效果是使用簡短的字母替代原來的類名屬性名等,一定程度上也可以減小代碼體積。此時要注意對於不該混淆的要做keep處理,另外對於那些反射的類要做keep處理。
3、開啟shrinkResources功能
shrinkResources標識是否去除無用的resource文件,它需要配合minifyEnable使用,同樣存在反射機制引用的問題,這種情況會被誤刪。
android {
buildTypes {
release {
minifyEnable true
shrinkResources true
}
}
}4、libs目錄瘦身
so文件最終會被打包到libs目錄中,我們針對libs目錄的瘦身主要是去除不必要的平台ABI的so文件,對於不重要的so庫可參考上面1方案中的f條。
defaultConfig {
ndk {
abiFilters “armeabi-v7a”, “arm64-v8a”
}
}
5、慎重選擇第三方庫
一些第三方庫他的功能很判斷,考慮問題很全面,有些開源框架他會根據功能不同提供了精簡版,有些會根據不同的平台提供了精簡版,還有根據不同的cpu架構提供了不同的精簡版,我們要根據的需求選擇不同的版本。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/226738.html
微信掃一掃
支付寶掃一掃