[toc]
依赖关系可视化
参考文档:
一、cocoapods依赖关系可视化
cocoapods管理的三方库之间有时候存在依赖关系,Podfile.lock藏满了各个版本库的版本号信息和彼此的依赖关系。
1、网页可视化导出:cocoapods-graph
终端安装插件:
1 | pip install cocoapods-graph |
使用方式:
进入到工程的根目录,执行:
1 | cd ~/Project/CQComponent/UIKit-Overlay-iOS/TSOverlayDemo |
生成 Podfile.lock.html 文件,
其内容展示如下:
2、图片可视化导出:cocoapods-dependencies
终端安装插件:
1 | gem install cocoapods-dependencies |
使用方式:
进入到工程的根目录,执行:
1 | pod dependencies [PODSPEC] [--graphviz] [--image] |
pod
是 CocoaPods 的命令行工具。dependencies
是 CocoaPods 中的一个命令,用于显示特定 pod 或项目中所有 pod 的依赖关系。[PODSPEC]
是一个可选参数,用于指定特定 pod 的名称。如果你提供了 pod 的名称,它将显示该 pod 的依赖关系。如果你没有提供 pod 的名称,它将显示项目中所有 pod 的依赖关系。--graphviz
是一个可选标志,它会生成一个 Graphviz DOT 文件(一般为Podfile.gv
),表示 pod 的依赖关系图。这个文件可以用于可视化依赖关系。--image
是一个可选标志,它会从 Graphviz DOT 文件生成一个图像文件(一般为Podfile.png
)。这样你就可以以图像格式查看依赖关系图。
示例1:不提供 [PODSPEC] 将显示项目中所有 pod 的依赖关系。
1 | cd ~/Project/CQComponent/UIKit-Overlay-iOS/TSOverlayDemo |
生成 Podfile.gv
和Podfile.png
文件如下:
cocoapods-dependencies-01-html
其中 Podfile.gv
可用 OmniGraffle应用程序
打开
打开方式说明如下:
序号 | 打开方式 | 打开说明 | 示例 | |
---|---|---|---|---|
1 | Hieracchical | 层次结构 | ||
2 | Force-Directed | 强制导向 | ||
3 | Circular | 圆形的 | ||
4 | Radial | 径向的 |
其各自详细效果图,详见 依赖关系可视化-TSOverlayDemo.graffle
示例2:提供 [PODSPEC] 将显示该 pod 的依赖关系
命令:pod dependencies AFNetworking --graphviz --image
这个命令将显示 AFNetworking
这个 pod 的依赖关系,并生成一个 Graphviz DOT 文件和相应的图像文件,用于可视化查看 AFNetworking
的依赖关系。你可以在生成的图像文件中查看依赖关系图。
1 | 1、安装 |
在运行 gem install reversepoddependency
命令后,安装的 reversepoddependency
gem 应该会被存储在你使用的 Ruby 安装目录下的 Gems 文件夹中。
问题:执行 /usr/local/lib/ruby/gems/3.2.0/gems/reversepoddependency-0.1.0/exe/specbackwarddependency ~/.cocoapods/repos/trunk AFNetworking
时候出现如下错误:
我们通过进入指定文件/usr/local/lib/ruby/gems/3.2.0/gems/cocoapods-core-1.12.1/lib/cocoapods-core/source.rb
查看其210
行,并添加以下代码,即可过滤掉该库:
1 | if name == "TUICalling" || name == "TUIChat" || name == "VK-ios-sdk" |
不然你得通过以下命令找到该所在库,然后再一个个删掉,这种方式会造成后续使用问题。所以我们选择修改判断代码
1 | cd ~/.cocoapods/repos/trunk/Specs |
添加代码后,重新执行
1 | /usr/local/lib/ruby/gems/3.2.0/gems/reversepoddependency-0.1.0/exe/specbackwarddependency ~/.cocoapods/repos/trunk AFNetworking |
得到的结果如下: