某物业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等等交流)。

相关文章
相关标签/搜索