某物業Apk減肥 從5344KB到3009KB

最近開發某物業公司的APP,項目寫完後感受Apk安裝包肥了點,給它作個減肥套餐。java

image

優化的目的git

減小APK文件大小、下載、安裝時間。github

一、能夠看到主要是如下部分佔用了應用大小

image

  1. classes.dex: Java字節碼文件
  2. res: 資源文件、xml、圖片等其餘文件。
  3. lib: so庫、jar包。
  4. resources.arsc: 二進制資源映射表
  5. assets: 存儲音視頻等原始資源文件。

1. 優化Dex文件

  1. minifyEnabled true proguard混淆、剔除代碼。
  2. zipAlignEnabled true 4字節對齊提升運行效率(若是在Google play上架必須開啓)
  3. 多餘依賴庫(項目基礎框架包含較多庫,部分庫可能這個項目沒有使用到)

image

External Libraries能夠看到jar,根據項目檢查是否是所用到的。web

經優化減小5344-4087=1257kb微信

image

二、優化Res文件夾

  1. 儘可能保留一套圖片資源、會自動根據高低密度縮放,主流720P 、1080P放xhdpi或xxhdpi。
  2. 開啓shrinkResources true 剔除無效資源
  3. png圖片壓縮、www.tinypng.com
  4. webp格式 在4.2.1以上會支持比較好,4.0~4.1不支持無損、透明通道(該方案暫未使用)。

image

經優化減小4087-3899=188kb架構

三、優化so庫

  1. abiFilters 配置支持的cpu架構類型

so庫有不少CPU架構的如:'armeabi','armeabi-v7a', 'x86', 'x86_64', 'mips', 'mips64', 'arm64-v8a'等,通常armeabi是兼容armeabi-v7a的,v7在圖形渲染方面作了優化,若是沒有特別要求能夠不須要。app

經優化減小3899-3591=308kb框架

四、優化resources.arsc

  1. 有美團方案、微信方案,我選擇微信方案,關閉V2簽名。
  2. resConfigs zh 因爲項目沒有國際化,暫支持中文

按官網配置後,選擇構建便可。工具

image

構建後能夠看到,資源混淆成功。優化

image

image

經優化減小3591-3009=582kb

五、其它優化

  1. 使用本身資源覆蓋第三方未使用到的資源,好比第三方有大圖在aar裏面,可是這張大圖並無實際展現出來,能夠放1x1大小圖片覆蓋,從而減小apk大小。

image

能夠解壓apk文件查看有哪些大圖,建立1*1放到對應目錄覆蓋。

小結

最終APK大小 5.21M瘦身到2.93M,其實還能夠再優化好比剔除R文件等,這些下次再好好琢磨補充文章。

二、其餘建議

  1. 使用插件化(上架Google Play慎用)
  2. 儘可能使用xml文件代替圖片(shape,selector等)
  3. 剔除R文件(此次優化尚未用上)。
  4. 使用Webp格式(這個坑尚未掌握,項目要求4.0+,還有國產手機改了rom不支持webp)
  5. 使用點9圖
  6. 使用常量代替枚舉
  7. HTML混合開發。

參考資料

  1. 老司機談APK瘦身套路-項目優化篇 http://blog.csdn.net/mynameishuangshuai/article/details/51766185
  2. 【推薦】 Android APP終極瘦身指南 https://mp.weixin.qq.com/s/3oSsVY5mbPUdZ-jW5T-0kQ
  3. 愛奇藝Android移動客戶端app瘦身經驗 http://blog.csdn.net/wenyiqingnianiii/article/details/52152091
  4. Android資源混淆打包方案 http://blog.csdn.net/xiangzhihong8/article/details/54989020
  5. 微信資源混淆工具 https://github.com/shwenzhang/AndResGuard
  6. 剔除R文件 https://github.com/meili/ThinRPlugin/blob/master/README.zh-cn.md
  7. 四字節對齊 http://blog.csdn.net/liujianli123/article/details/47045929

打個廣告: Square開源交流 QQ羣166354503 (Rxjava Retrofit EventBus MVP OKHttp等等交流)。

相關文章
相關標籤/搜索