14

我在一些项目中使用了 CocoaPods。使用我的依赖项/开源框架保持更新既酷又容易。

但我对 CocoaPods 的内部运作有些怀疑。

在我们的 Podfile 中,我们只给出 pod 的名称,有时也给出版本,比如

pod "AFNetworking" , "1.3.2"

然后它会正确找到并克隆 AFNetworking 存储库。这是怎么工作的?ruby gems 如何知道 Github 中的实际存储库。pod 是否仅适用于 Github?(因为我在 Github 上看到了仅适用于框架的 pod)。如果我们可以将 Pod 用于 Github 以外的依赖项(例如来自 Bitbuket),我们如何将该 Pod 添加到我们的 Podfile 中?

4

2 回答 2

13

CocoaPods 在幕后做了很多工作,以使您谈论的所有内容都能正常工作。在相对较高的级别上,实际的“Pod”是在位于 Github 上的 repo 中管理。这是第 3 方库供应商提交他们的“Pod”以使用 CocoaPods 的地方。您会注意到,如果您使用命令行工具搜索 Pod,pod search AFNetworking您将看到与您的搜索词匹配的所有可用 Pod。

就 Github 与其他站点而言,尽管充满 CocoaPods 规范的存储库位于 Github 上,但 CocoaPods 本身仅使用普通的旧 Git 从给定存储库中提取源代码。因此,您可以从托管在任何站点上的任何 git 存储库中进行规范。我们还支持 svn、mercurial 和普通的旧 http(s)。如果您对规范的整体工作方式感兴趣,您可以查看规范存储库~/.cocoapods/repos/master中的一些内容,您可以在本地计算机上打开它们或直接pod spec edit AFNetworking从命令行编辑它们。

于 2013-09-20T15:01:10.420 回答
0

可可豆荚

CocoaPods是一个集中的依赖管理。它通过Podfile读取依赖项和版本来操作。Pod项目将在工作区中创建。CocoaPods实现Implicitly dependency[关于]方法:

在客户端,您有一个Podfile. 的核心Podfile是一个pod:

何时Podfile(在pod install或期间pod updateCocoapods被创建隐式和显式依赖关系图。之后,管理器应该找到每个源到.podspec通常托管到某个主机中的一个。这就是为什么Cocoapods中心化的。框架的开发人员负责创建此文件并支持它。.podspec描述有关框架的元信息,如依赖项、子规范等。它的主要部分是source告诉Cocoapods源的托管位置以及这些源将被下载到Pod项目中。Cocoapods使用工作空间自动化构建过程并管理隐式依赖项。Cocoapods将所有必要的信息设置到您的消费者项目中(如搜索拍等)。当您构建消费者项目时,Xcode 将 pod 拉出并组装在一起。

.podspec

规范或规范确定一般数据,如模块名称、部署版本等。规范可以包含子规范或子规范,以便对源文件进行更精细的控制。每个规范或子规范都可以有依赖关系。默认情况下,如果您未指定,规范将包括所有子规范default_subspec

模块名称将更改时

1. <module_name>.podspec
2. <spec_variable>.name = "<module_name>"
//or
1. <spec_variable>.module_name = '<module_name>'

[本地 podspec]
[CocoaPods 版本]
[iOS 依赖管理器]
[CocoaPods source_files]

于 2019-12-06T19:03:28.280 回答