apk瘦身(包大小优化)
最近太忙好久没有写随笔,放假才有空写写随笔。
最近在项目中一直在做包大小优化
随着业务需求的增加,包大小是忍不住的往上涨
为了提高应用市场下载转化率,一直在优化包大小
首先 分析你的apk中占比的主要成分,以及可以减少的部分
一般主要有下面几部分构成你包的大小
1. 资源(主要是图片资源,布局,assets等)
2. so大小
3. 三方库
4. 二方库
5. 业务功能
主要从上面的几部分来进行优化
1.通过压缩图片、重点出一套图片删除其他的图片、简单的图形通过shap代替png
2. 大的背景图片在很少用到页面上使用时,将没有alpha通道的png压缩成jpg,甚至webp格式
3. 通过include减少重复布局文件、资源混淆
4. 编译so的时候通过指定arm和thumb2指令格式减少so大小
5. 删除armeabi-v7a下面的so,甚至可以删除x86下面的so(x86 houdini支持兼容arm指令)
6. 同样的功能用小的三方库代替大的三方库
7. 删除三方库中多余的功能
8. 打包时候过滤三方库中不用的资源
9. 公司的二方库,一般要催促其他的团队优化SDK的大小
10. 删除dex中的垃圾指令、通过混淆来减少dex的大小
11. 用7zip压缩代替普通的zip压缩(注意压缩后会导致raw下面文件找不到,所以过滤文件格式为store的文件不进行压缩)
12. 通过网络下载,动态加载jar,dex, apk的方式来减少包大小(插件化)
如何查看zip包中的文件格式:
unzip -lv WhatsApp-Messenger_v2.12.550pakage.apk | grep .so
介绍一款分析包大小的网站:
https://nimbledroid.com