APK压缩方法总监思路

现在项目APK 包太大,都已经达到50+M了,不仅仅下载慢,而且作为开发者编译,测试都要花费很多时间。因此想,有没有什么方法能优化下APK。

从上而下的分析思路

  1. 插件化,需要的时候时候再去下载,可以极大的减少APK大小。但是有一定技术难度,成熟的方案有,360 RePlugin,VirtualAPK ,Atlas等
  2. 模块化,业务分模块开发,并且提供noop包,保证能编译,但是无太多代码。
  3. 组件化,公用的功能抽取出内聚的组件模块,尽量复用。

从下而上的分析思路。

大家耳熟能详的方法就有很多,比如开启混淆,压缩图片,使用 SVG,去除无用库,使用 AndResGuard 之类的。大概分类了下:

优化图片大小

1.使用 tinyPNG 压缩图片大小
2.有些图片换成 webP 格式,如背景图
3.icon 图标仅保留一套,使用时将 ImageView 大小限制死。仅保留极个别不同分辨率的图标。

  1. 部分icon 使用 svg 代替(少量)

优化布局

1.优化层级,减少布局嵌套
2.一个界面一个界面的消除过渡绘制
3.多使用 include 标签,重用布局
4.不必要的布局使用 ViewStub 延迟加载(用的很少)
5.将可复用资源抽取到对应的 res 文件中,如字符串,样式等

优化代码

1.实体类去除没用到属性,并将属性设为 public ,去除 get / set 方法
2.减少内部嵌套的实体类,尤其像 GsonFormat 这样的工具生成的实体类
3.能服用的尽量复用。

  1. 剔除了一部分我自己常用的打包好的工具类中一些没调到的方法。

优化三方库的使用

  1. Glide 还是 Picaso 纠结了好一阵子。Picaso 要小很多
    2.推送,统计,三方登录,微信支付,地图,这个没法删。但是优化了一下 so 适配CPU的数量。

编译优化

  1. 开启混淆
  2. 代码压缩,mini

其他优化

  1. 部分功能,网页实现
  2. 地图可用JS代替原生实现

你可能感兴趣的:(APK压缩方法总监思路)