美文网首页
iOS 代码瘦身(一):静态扫描无用的类

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

作者: 落叶情思 | 来源:发表于2021-01-16 21:20 被阅读0次

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

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

静态扫描的原理

在iOS编译的产物 Mach-o文件__DATA __objc_classrefs 段记录了引用类的地址,__DATA __objc_classlist段记录了所有类的地址,取差集可以得到未使用的类的地址,然后进行符号化,就可以得到未被引用的类信息。<label style='color:red'> (PS:静态类获取的类会有误差,需要人工确认才可删除!)</label>

方法介绍

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

参考文档以及Git repo

Python 脚本 Git地址

相关文章

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

    为什么要优化安装包的体积 下载时耗费多余的流量,占用更大的手机内存空间 超过一定限制会被禁止安装 4G网络不支持下...

  • iOS App瘦身

    iOS App瘦身 关于app瘦身,你能想到什么? 删除无用类 删除无用方法 代码相似度分析 删除无用图片 无损压...

  • 基于mach-o+反汇编的无用类检测

    一、为什么要做无用代码检测 58在前段时间通过无用图片扫描和无用图片线上监控实现了对APP资源的瘦身,并且取得了不...

  • 静态代码扫描 (五)——Java 资源关闭的特殊场景

    这是静态代码扫描系列文章的第五篇,前四篇回顾: 静态代码扫描 (一)——PMD 自定义规则入门 静态代码扫描 (二...

  • iOS代码瘦身实践

    iOS代码瘦身实践 iOS代码瘦身实践

  • iOS应用程序瘦身的静态库解决方案

    iOS应用程序瘦身的静态库解决方案 iOS应用程序瘦身的静态库解决方案

  • 真题

    1、iOS瘦身:代码瘦身、资源优化。(安装包体积优化,图片资源优化的策略)(怎么删除无用的图片?怎么压缩图片?)2...

  • android apk 瘦身

    App瘦身 代码瘦身 移除无用代码、功能,缩减方法数; 移除无用的库、避免功能雷同的库; 启用Proguard,让...

  • 前端静态代码扫描——eslint

    背景 最近想做静态代码扫描,先用jenkins+findbugs做了服务端的java代码静态代码扫描自动化,前端的...

  • iOS瘦身各种方案

    iOS瘦身之删除无用的mach-O文件 iOS微信安装包瘦身 基于clang插件的一种iOS包大小瘦身方案 以往C...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/bproaktx.html