CocoaPods是如何工作的



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

但我对CocoaPods的内部工作原理有一些怀疑。

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

pod "AFNetworking" , "1.3.2"

然后,它会正确查找并克隆 AFNetwork 存储库。这是怎么回事?红宝石如何知道实际的存储库在 Github 中。Pod 只能与 Github 一起使用吗?(因为我只看到 Github 上可用的框架的 pod)。如果我们可以将 pods 用于 Github 以外的依赖项(例如来自 Bitbuket),我们如何将该 pod 添加到我们的 Podfile 中?

CocoaPods在幕后做了很多工作,让你谈论的一切工作。在相对较高的层面上,实际的"Pod"是在Github上的存储库中进行管理的。这是第三方库供应商提交他们的"Pod"以使用 CocoaPod 的地方。您会注意到,如果您使用命令行工具搜索 Pod,pod search AFNetworking您将看到与您的搜索词匹配的所有可用 Pod。

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

CocoaPods

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

  • Source code
  • Closed code [示例]

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

  • 名字
  • 版本
  • - 语义版本控制

当读取Podfile时(在pod installpod update期间),Cocoapods将创建隐式和显式依赖关系图。之后,管理器应该将每个源查找到通常托管到某个主机中的.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>'

[本地吊舱规格]
[可可豆荚版本]
[iOS 依赖项管理器]
[可可豆荚 source_files]

我可以对其他答案进行一些补充,您也可以通过提供本地路径来安装本地 pod 文件。你可以这样使用它;

pod 'Analytics', :path => '~/your-local-file/Analytics' 

即使您可以从 git 源安装 pod 文件,也可以签出所需的分支。你可以这样使用它;

pod 'Analytics', :git => 'https://username@bitbucket.org/username/your-Analytics-repo.git.com/', :branch => 'Prod'

最新更新