CocoaPods 源码导读:架构总览
本系列基于 CocoaPods 1.16.2(2026 年 4 月)源码进行分析。源码仓库由 15 个 Ruby Gem 组成,本文先从整体架构与职责拆分讲起,再以 pod install --repo-update 为主线绘制全景执行图,串起后续两篇专题的切入点。 系列目录: 架构总览(本文) 从命令到依赖求解 从下载到工程集成 一、CocoaPods 不是单一仓库 很多人以为 CocoaPods 就是一个 Ruby 项目,其实官方仓库 CocoaPods/CocoaPods 只是入口,真正的能力被拆成 15 个独立 gem,每个 gem 只做一件事。用 gem dependency cocoapods 会看到这样的依赖拓扑: graph TB subgraph "入口" A["bin/pod(CocoaPods gem)"] end subgraph "命令行框架" B["CLAideCommand/Arg/Option DSL"] end subgraph "领域模型" C["CorePodfile/Podspec/Source/Lockfile"] end subgraph "依赖求解" D["Molinillo回溯式 SAT 求解器"] end subgraph "下载" E["cocoapods-downloaderGit/HTTP/SVN/Hg/SCP"] end subgraph "Xcode 工程读写" F["Xcodeprojpbxproj/xcconfig/workspace"] G["NanaimoASCII plist 解析"] end subgraph "插件与子命令" H["cocoapods-plugins"] I["cocoapods-trunkcocoapods-searchcocoapods-trycocoapods-deintegrate"] end subgraph "辅助" J["cork彩色输出"] K["nap轻量 HTTP 客户端"] end A --> B A --> C A --> D A --> E A --> F F --> G A -.加载.-> H H -.调用.-> I A --> J I --> K 各 gem 的一句话职责: ...