iOS包体积优化的系列文章,其中包括:
- iOS 包体积优化1 - 总览
- iOS 包体积优化2 - 如何分析ipa包?
- iOS 包体积优化3 - 代码管理
- iOS 包体积优化4 - 资源管理
- iOS 包体积优化5 - 编译优化
- iOS 包体积优化6 - 长期维护
关于代码管理,把握好以下几点就够了:
- 废弃类的检测和删除
- 废弃代码的检测和删除
- 废弃功能的确认和删除,需要和自己的产品经理确认。
对于废弃类和方法的删除,一定不要怕麻烦,最好采用双确认方法(删除需要两个人分别确认)。 由于代码之间存在引用的情况,所以整个代码优化流程,需要重复执行几次。
一. WHC_Scan
1. 简介
支持 Swift + OC
应用: Mac工具(扫描项目里没有使用的类)
高效: 支持自定义设置扫描线程数量(提高扫描分析效率)
好处: 删除项目没有使用的类增加项目结构清晰度利于后期升级维护并减小打包体积
强大: 支持iOS 和 Android项目(扫描准确率95%以上实测iOS项目)
2. 地址
3. 使用
下载软件,运行项目,选择要扫描的项目目录,执行 开始扫描。
扫描选项
-
快速扫描: 主要针对高编码质量项目(命名规范,无垃圾注释....),扫描速度最快
-
常规扫描: 主要针对一般编码质量项目(命名规范一般,少量垃圾注释....),扫描速度一般
-
深度扫描: 主要针对编码质量比较差的项目(命名不规范,大量垃圾注释....),扫描速度比较慢
-
扫描速度:快速扫描 > 常规扫描 > 深度扫描
-
扫描准确性:快速扫描 < 常规扫描 < 深度扫描
其他:设置扫描线程的数量不宜过大一般5个线程左右足以(设置太大内存承受压力大)
4. 注意
- 需要比较久的时间。
- 这个工具不是100%靠谱,可根据这个列表,人工确认。
- 由于代码之间有耦合,删除完代码之后,再次执行。 多循环几次。
- 会找出来一些Xcode中搜索不到的类, 就有可能是存在文件目录中,但是没有被引用。
- 如果项目中有路由等,一定要谨慎删除。
二. Fui
1. 简介
查找未引用的类 OC
2. 地址
3. 使用
$ gem install fui
$ cd 工程目录
$ fui find
4. 注意
- 根据项目大小,需要等几分钟,会在终端列出来疑似未引用的类。
- 会包含Pods中的类。
- 这个工具不是100%靠谱,可根据这个列表,人工确认。
- 由于代码之间有耦合,删除完代码之后,再次执行。 多循环几次。
- 会找出来一些Xcode中搜索不到的类, 就有可能是存在文件目录中,但是没有被引用。
- 如果项目中有路由等,一定要谨慎删除。
三. XcodeProjectArrangementTool
1. 简介
搜索项目不用的类,支持Swift + OC。但是使用的时候,误报率非常高,放弃了使用。
2. 地址
3. 使用
- 第一步运行程序。
- 在“UseFiles”文本框下面的,第一个文本框,输入要过滤的文件,用逗号分割。
- 点击“Browse...”按钮,选择工程目录中的 .xcodeproj 文件。或者拖拽 “.xcodeproj”文件到文本框中。
- 点击"search"搜索按钮. 将 UnusedFiles文框中的类去xcode中全局搜索一下,再次确定是否使用。
4. 注意
- 这个工具检测误差较大(可能是我的项目是混编的问题),可根据这个列表,人工确认。
- 由于代码之间有耦合,删除完代码之后,再次执行。 多循环几次。
- 会找出来一些Xcode中搜索不到的类, 就有可能是存在文件目录中,但是没有被引用。
- 如果项目中有路由等,一定要谨慎删除。
四. swift-scripts
1. 简介
【强烈推荐】针对Swift文件里面的废弃方法或属性的查找。
2. 地址
3. 使用
* 下载
* cd 到项目目录
* 执行 unused.rb路径。
Item< func followTopicOperation [static] from: pluto/SwiftModule/xx/xx.swift:23:0>
Item< var emptyDataArray [] from: xx/xx/xx.swift:15:0>
swift-scripts 使用 Item<> 表明每一项检测内容。 其中 包含 【属性名或方法名】【文件路径】【所在行数】
使用下来,认为还是比较精确的。
4. 注意
- 这个工具不是100%靠谱,可根据这个列表,人工确认。
- 由于代码之间有耦合,删除完代码之后,再次执行。 多循环几次。
四. 其他
1. AppCode
appCode 软件中提供了代码检测功能,但是现在软件收费了。