iOS代码瘦身实践

1 分析当前ipa的组成

一般一个ipa会包含:

1. 资源文件

本地文件:数据、配置、数据库等等

字体文件

图片资源

2. 源代码

通过生成linkmap文件,分析源代码生成的编译文件的大小。在Build Settings中Write Link Map File设置为Yes (记住release时候不要设置为Yes)。

2 资源瘦身

无用的图片文件

查找无用的图片文件,使用

无损压缩图片

使用

ImageOptim

(https://github.com/ImageOptim/ImageOptim)进行png文件的无损压缩

WebP图片压缩

WebP是Google提供的一种图片编码格式,通常情况下WebP格式的图片是原始JPG/PNG图片的1/3,所以对于重度依赖图片显示的应用,转换使用WebP可以节省大量的网络传输数据和时间。对于APP瘦身,使用WebP格式可能是一种方式,可以使用WebP格式的图片替代现有的图片资源,可以一定程度的节省空间。

使用WebP转换工具

(https://developers.google.com/speed/webp/docs/precompiled)

尝试转换了几张较大的图片,效果如下:

使用WebP格式的图片,似乎就抛弃了iOS @2x @3x按照设备加载对应图片的机制,所以应该还可以删除所有@2x图片,不过加载速度比原生较慢。

3 代码瘦身

AppCode代码静态检查

清除无用代码

AppCode搜索出来的无用的Class,会有误报需要仔细检查每一个报错的代码。

使用Fui(https://github.com/dblock/fui)查找发现下列无用文件,同样需要double check避免误删

清除无用的Import

Fui(https://github.com/dblock/fui)可以用于查找无用的import,同时也提供xcfui 可以和Xcode集成。

清除无用的Method

基于AppCode的扫描定期做清理

这篇文章提供了一个很好的思路可以一键删除无用方法:http://www.jianshu.com/p/a53480ad0364

查找相似的代码

使用SameCodeFinder (https://github.com/startry/SameCodeFinder)可以查找到相似的代码,最后一位数字代表两个文件的海明距离,数字越小说明两个文件越类似。

清理其他无用的代码

已经下线的陈旧代码,AB试验已经下线的代码

通过转H5、Hybrid或者RN实现的Native功能,可以定期清理

一些非核心Hybrid或者RN模块,可以考虑不要打包进入APP,通过动态下发的方式获取

代码的重构,UI组件、业务逻辑的重用等等

作者:奶爸码农

链接:https://www.jianshu.com/p/4aecf517b5d9

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180904B09OWO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券