使用Swfit3清除OC无用代码

当项目越来越大,引入第三方库越来越多,上架的 APP 体积也会越来越大,对于用户来说体验必定是不好的。在清理资源,编译选项优化,清理无用类等完成后,能够做而且效果会比较明显的就只有清理无用函数了。

一种方案是我们滴滴的王康基于clang插件这样一个源码级别的分析工具来分析代码间的调用关系达到分析出无用代码的目的,文章在这里:基于clang插件的一种iOS包大小瘦身方案文章里对objc方法的定义,调用,实现的全面说明达到了极致,非常值得一看。

另一种方案是根据Linkmap文件取到objc的所有类方法和实例方法。再用工具比如 otool 命令逆向出可执行文件里引用到的方法名然后通过求差集得到无用函数,由于API的回调也会被认为是无用函数,所以这个方案还需要将这些回调函数加到白名单里过滤。具体说明,可以看看微信团队的这篇文章:iOS微信安装包瘦身

还有一种使用了 *machoview* 从Mach-O里获取信息进行无用方法和文件的处理。阿里有篇文章对 Mach-O 的处理做了详细的说明:减小ipa体积之删除frameWork中无用mach-O文件

这几个现有方案有些比较麻烦的地方,因为检索出的无用方法没法确定能够直接删除,还需要挨个检索人工判断是否可以删除,这样每次要清理时都需要这样人工排查一遍是非常耗时耗力的。

这样就只有模拟编译过程对代码进行深入分析才能够找出确定能够删除的方法。具体效果可以先试试看,程序代码在:https://github.com/ming1016/SMCheckProject选择工程目录后程序就开始检索无用方法然后将其注释掉。

作者:星光社的戴铭

链接:https://www.jianshu.com/p/a53480ad0364

來源:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


工具下载地址:https://github.com/ming1016/SMCheckProject 

你可能感兴趣的:(使用Swfit3清除OC无用代码)