项目介绍
WBBlades 是一个基于 Mach-O
文件解析的工具集。该工具集为开发者提供了多种实用功能,包括应用程序一键体检(支持 OC
和 Swift
的无用类检测)、包大小分析(支持单个静态库和动态库)、点对点崩溃解析(基于系统日志,支持华为和 Bugly 平台的崩溃堆栈解析,支持有符号和无符号状态),以及基于 Mach-O 文件的类自动提取与 Hook 能力。项目采用了多种技术手段,如汇编代码分析、架构提取、符号表剥离等,并支持对 iOS 15 以上 dyld_chained_fixups 的处理。此外,为了便于用户更快了解该项目,我们还提供了基于 GPT 的智能 Readme 功能。
工具概览
工具名称 | 功能概述 | 相关技术 |
---|---|---|
智能 Readme | 问答互动形式帮助用户快速了解 WBBlades 项目和相关技术 | GPT 聊天 |
App 一键体检 | 检测 Swift 和 OC 的无用类、无用资源,并提供包优化建议 | 反汇编、文本指令提取、Mach-O 解析等 |
包大小分析 | 检测静态库和动态库在 .ipa 文件中占用的实际大小 | 架构剥离、静态库结构分析 |
崩溃解析 | 利用 .app 或 dYSM 文件解析系统崩溃日志,支持华为和 Bugly 平台 | dYSM 文件解析、符号表提取、ips 文件解析等 |
Mach-O 类 Hook | 从 Mach-O 文件中自动提取类并进行 Hook | 使用 dyld_chained_fixups、binding、rebase 等解析方式 |
最新版本在命令行工具的基础上进行了全面的可视化实现,旨在提升研发效率。同时,对于一些难以复现和常规工具无法收集的崩溃(例如操作系统直接杀死应用进程),提供了基于系统日志的点对点崩溃解析功能。
安装及使用
安装
首先克隆项目代码,然后使用 CocoaPods 进行安装:
$ git clone https://github.com/wuba/WBBlades.git
$ cd WBBlades
$ pod install
可视化工具的使用
在目标选项中选择 WBBladesCrashApp
。通过点击左侧功能区按钮,选择需要的工具(如无用类检测、包大小检测等),根据工具内提示进行操作,结果将输出到文本框中。
命令行工具的使用
选择 WBBlades
作为目标,编译后生成命令行工具。然后将生成的 blades
工具拷贝到 /usr/local/bin
目录下。例如:
sudo cp ${Your_BUILD_DIR}/blades /usr/local/bin
可执行的命令示例如下:
-
一键诊断:
$ blades -diagnose xxx.app
-
无用代码检测:
$ blades -unused xxx.app -from xxx.a xxx.a ...
-
包大小分析:
$ blades -size xxx.a xxx.framework ...
-
无符号表日志符号化:
$ blades -symbol xxx.app -logPath xxx.ips
工具特性介绍
无用代码检测的支持范围
支持检测 OC 类的静态调用、动态调用、Swift 类动态调用等多种场景。
包大小分析工具
可以快速检测静态库在链接后的大小,无需进行编译和链接。
无符号表日志符号化工具
在丢失 dSYM 文件的情况下,可以尝试通过 blades -symbol
恢复日志,主要适用于 OC 场景。
如何贡献及反馈
WBBlades 欢迎开发者提出宝贵建议,用户可通过提交 PR 或 Issue 提出问题及改进建议。如对该项目感兴趣,可以添加微信号 "zqlong320" 以加入 WBBlades 开发交流群。
相关技术文章
WBBlades 提供了一系列相关技术文章,助力开发者更深入地了解项目与实践应用。
致谢
感谢以下开源项目的支持和贡献: