-
Notifications
You must be signed in to change notification settings - Fork 229
/
UsageDetail.md
89 lines (60 loc) · 5.98 KB
/
UsageDetail.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# WBBladers工具用法介绍
WBBlades是基于`Mach-O`文件解析的工具集,包括无用代码检测(支持`OC`和`Swift`)、包大小分析、无符号表日志符号化。主要利用了__Text汇编代码分析、架构提取、符号表剥离、DYSM文件提取、崩溃文件(ips)解析等技术手段实现。
## 无用类检测工具
**技术特点**
- 支持检测一个.app或.ipa文件中的无用类(支持OC和Swift),支持对类的继承、动态调用、自身类调用等情景下的无用类检测,同时支持检测指定静态库中的无用类。
**用法介绍**
- 工具首页 -> 无用类检测
- 将.app或.ipa文件(如图1中标签1)拖入工具中(如图1中标签2),点击【开始检测】按钮(如图1中标签3),此时日志输出区将会输出当前分析的过程以及展示最终的无用类分析结果。(如图1中标签4)
<p align="center">
<a>图1:快速进行无用类检测示意图</a>
</p>
![图片1](https://wos.58cdn.com.cn/pQnMlKjpQSW/iwikibucket/v1.1_wxios1_IOS_%E7%8B%AC%E7%AB%8B%E9%A1%B9%E7%9B%AE_%E6%98%8E%E9%95%9C%E9%A1%B9%E7%9B%AE_%E5%BC%80%E6%BA%90%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B7%A5%E5%85%B7%E4%BB%8B%E7%BB%8D_WebHome_unusedclass_tool_1.png)
- 如果想要在指定的静态库中分析无用类,则可以按下图2所示流程,将指定的静态库拖入到静态库输入框(图2中步骤2),同时点击添加按钮(图2中步骤3),添加后会在图2中标签4位置展示,此时点击开始检测(图2步骤5),分析完后在图2所示6的位置进行分析结果的展示;
- 支持指定多个静态库进行分析,重复图2中的步骤2和步骤3即可。
<p align="center">
<a>图2:指定静态库中分析无用类示意图</a>
</p>
![图片2](https://wos.58cdn.com.cn/pQnMlKjpQSW/iwikibucket/v1.1_wxios1_IOS_%E7%8B%AC%E7%AB%8B%E9%A1%B9%E7%9B%AE_%E6%98%8E%E9%95%9C%E9%A1%B9%E7%9B%AE_%E5%BC%80%E6%BA%90%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B7%A5%E5%85%B7%E4%BB%8B%E7%BB%8D_WebHome_unusedclass_tool_2.png)
## 包大小检测工具
**技术特点**
- 支持快速检测一个静态库的链接后大小无需编译链接。**举例说明:如果你想知道接入或更新一个SDK对会增加多少包大小,可以用使用包大小检测工具检测**,而无需将SDK接入编译链接成功后进行测算。
**用法介绍**
- 工具首页 -> 包大小分析
- 将静态库或者静态库所在的文件夹(如图中标签1)拖入工具中(如图中标签2),点击开始(如图中标签3),可执行文件对应的大小(如图中标签4)以及图片等资源占用的大小(如图中标签5)会直接输出到文本框中;
- 结果分析后,点击打开(如图中标签6), 就会打开存储在桌面上的分析后的详细数据;
<p align="center">
<a>包大小分析工具示意图</a>
</p>
![图片1](https://wos.58cdn.com.cn/pQnMlKjpQSW/iwikibucket/v1.1_wxios1_IOS_独立项目_明镜项目_开源可视化工具介绍_WebHome_截屏2022-05-2617.26.20.png)
**注意事项:**
- 如果使用动态库, 动态库本身是独立的Mach-O结构, 用分析工具只相当于将架构剥离为arm64时对应的包大小。
## 崩溃日志解析工具
**技术特点**
- 支持多种系统崩溃日志(ips文件)的符号还原,既可以通过符号表文件解析崩溃日志,还可以在缺少符号表的情况下对堆栈进行还原,还支持App存在段迁移情况下系统崩溃日志包含异常符号时自动修正。
**用法介绍**
- 工具首页 -> 崩溃解析
- 将系统崩溃日志拖入到大文本框中(如图中标签1),并且将符号表文件(支持.app, .dSYM, .symbol文件)的路径拖入到文本框中(如图中标签2),点击开始即可;
符号表文件解释:
在解析崩溃日志时可以拖入三种不同的符号表文件,分别为.app,.dSYM, .symbol文件。
.app文件:App最终生成的产物,是在Products中的进程名.app文件,通常在Debug过程中构建并生成的.app文件未剥离dSYM符号表文件,我们将自动提取该符号表文件并提取轻量符号表用于解析崩溃日志。若你的.app文件已经剥离过符号表文件,我们尝试通过无符号进行解析,场景仅适用于OC。
.dSYM文件:它是包含文件,方法以及行数指令信息的文件,通常在Release环境中构建包时自动会通过DWARF将调试信息从可执行文件中剥离到dSYM文件。我们将从该文件中提取轻量符号表用于解析崩溃日志。
.symbol文件:是我们自研的轻量符号表文件,文件中包含函数指令区间以及对应的函数名,如果你之前使用过该工具,可以直接将该符号表文件拖入用于解析崩溃日志。
- 结果分析后,点击打开(如图中标签6), 就会打开存储在桌面上的分析后的详细数据;
<p align="center">
<a>崩溃日志解析工具示意图</a>
</p>
![图片1](https://wos.58cdn.com.cn/pQnMlKjpQSW/iwikibucket/v1.1_wxios1_IOS_%E7%8B%AC%E7%AB%8B%E9%A1%B9%E7%9B%AE_%E6%98%8E%E9%95%9C%E9%A1%B9%E7%9B%AE_%E5%BC%80%E6%BA%90%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B7%A5%E5%85%B7%E4%BB%8B%E7%BB%8D_WebHome_%E6%88%AA%E5%B1%8F2022-05-27%E4%B8%8B%E5%8D%884.04.41.png)
**注意事项:**
- 需要确认系统崩溃日志以及符号表文件是否对应,否则解析结果会不正确。
## 静态库依赖关系工具
**技术特点**
- 支持多个静态库之间的依赖关系以及所依赖的符号。
**用法介绍**
- 工具首页 -> 静态库依赖关系
- 将静态库所在的路径拖入到文本框中(如图中标签1),点击开始即可输出结果;
- 结果分析后,点击打开, 就会打开存储在桌面上的分析后的详细数据;
<p align="center">
<a> 静态库依赖关系工具示意图</a>
</p>
![图片1](https://wos.58cdn.com.cn/pQnMlKjpQSW/iwikibucket/v1.1_wxios1_IOS_%E7%8B%AC%E7%AB%8B%E9%A1%B9%E7%9B%AE_%E6%98%8E%E9%95%9C%E9%A1%B9%E7%9B%AE_%E5%BC%80%E6%BA%90%E5%8F%AF%E8%A7%86%E5%8C%96%E5%B7%A5%E5%85%B7%E4%BB%8B%E7%BB%8D_WebHome_%E6%9C%AA%E5%91%BD%E5%90%8D2.png)