IOS 项目包瘦身(一)

24 篇文章 0 订阅
19 篇文章 0 订阅

项目瘦身

一.日常的项目经过长时间的迭代,优化,重构之后,可能会积累一些用不到了的类,长久下去,会影响我们的包大小。
  • 主要删除项目中未使用的类。
  • 删除项目中未使用的资源文件
  • 压缩项目中大型资源文件
二. 首先针对未使用的类
使用脚本可以检测出项目中未使用的类。 (可评论咨询)
a. 检测原理: 未使用的类 = 项目中所有的类 - 项目中被引用的类 - 实现load方法的类 - 实现load方法的分类 - 项目中使用字符串表示的类 - 子类被引用它的父类 - (只被当作属性没用被使用的类)。
b.实现方式:使用 otool 分析 Mach-o

otool 介绍:Otool 可以提取并显示IOS下目标文件的相关信息,包括头部,加载命令,各个段,共享库,动态库等等。有强大的命令选项,一个强大的分析工具。

主要的命令有:如下

  1. 获取项目中所有类的符号集合 (otool -v -s __DATA __objc_classlist mach-o Path)
  2. 获取项目中所有被引用累符号集合 (otool -v -s __DATA __objc_classrefs mach-o Path)
  3. 获取项目所有调用load类符号集合(otool -v -s __DATA __objc_nlclslist mach-o Path)
  4. 通过类的符号,找到类名 (nm -nm mach-o Path)
  5. 查找当前所有类的父类和子类,如果父类在未使用列表,子类不在未使用列表,认为父类有被调用过 (otool -oV mach-o Path)
  6. 检测项目中的静态字符串,如果某个静态字符串在未使用类列表,删除当前类(otool -v -s __TEXT __cstring mach-o Path)
  7. 检测当前未使用的类是否使用了load方法,分类是否用了load方法 (otool -oV mach-o Path)
c.分析后的结果取差集

第一步:
分别找到所有类和引用类的集合,然后取差集,初步得到未使用类集合
第二步:
然后依次检查导出的未使用的类,避免误伤。

d .Mach-O 文件结构mach-o
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值