iOS 代码瘦身(一):静态扫描无用的类

13 篇文章 0 订阅

为什么要优化安装包的体积

  • 下载时耗费多余的流量,占用更大的手机内存空间
  • 超过一定限制会被禁止安装
  • 4G网络不支持下载超过200MB的APP !(最初Apple要求的是150M)

静态扫描的原理

在iOS编译的产物 Mach-o文件__DATA __objc_classrefs 段记录了引用类的地址,__DATA __objc_classlist段记录了所有类的地址,取差集可以得到未使用的类的地址,然后进行符号化,就可以得到未被引用的类信息。

方法介绍

  • 第一步 通过otool -v -s __DATA __objc_classrefs获取到引用类(明确用到的)的地址。
  • 第二步 通过otool -v -s __DATA __objc_classlist获取所有类的地址。
  • 第三步 用所有类信息减去引用类的信息,此时我们可以拿到未使用类的地址信息。
  • 第四步 通过nm -nm命令可以得到地址和对应的类名字。

参考文档以及Git repo

Python 脚本 Git地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值