git CocoaPods是如何工作的

r3i60tvu  于 2023-01-19  发布在  Git
关注(0)|答案(3)|浏览(131)

我在我的一些项目中使用了CocoaPods,它很酷,很容易更新我的依赖项/开源框架。
但我对CocoaPods的内部工作原理有些怀疑。
在我们的Podfile中,我们只给出了pod的名称,有时也会给出版本,例如

pod "AFNetworking" , "1.3.2"

然后它正确地找到并克隆了AFNetworking repo。这是如何工作的?ruby gems是如何知道实际的仓库在Github中的?pod是否只适用于Github?(因为我看到pod只适用于Github上可用的框架)。如果我们可以在Github之外的其他地方(例如Bitbuket)使用pod作为依赖项,我们如何将该pod添加到我们的Podfile中?

whitzsjs

whitzsjs1#

CocoaPods在幕后做了很多事情来让你谈论的一切都能正常工作。在相对较高的层次上,实际的“Pod”是在Github here上的一个repo中管理的。这是第三方库供应商提交他们的“Pod”来与CocoaPods一起工作的地方。我会注意到,如果您使用命令行工具pod search AFNetworking搜索Pod,您将看到所有与您的搜索词匹配的可用Pod。
就Github与其他网站的比较而言,尽管Github上有CocoaPods规范的仓库,但CocoaPods本身只使用普通的Git从仓库中提取源代码,因此你可以从任何网站上的任何Git仓库中提取规范,我们也支持svn,善变和只是普通的老http(s)。如你我对规范的总体工作方式很感兴趣,您可以在specs repo中查看一些规范,您可以从本地计算机上的~/.cocoapods/repos/master打开它们或直接编辑一个规范从命令行输入pod spec edit AFNetworking

htrmnn0y

htrmnn0y2#

可可豆

CocoaPods是一个集中式依赖管理,由Podfile操作,读取依赖和版本,在工作区创建Pod工程,CocoaPods实现Implicitly dependencyAbout(https://stackoverflow.com/a/57836007/4770877)方法:

  • Source code
  • Closed codeExample(https://stackoverflow.com/a/58096234/4770877)

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

读取Podfile时(在pod installpod update期间),由Cocoapods创建隐式和显式依赖关系图。之后,管理器应将每个源查找到.podspec中,该.podspec通常托管在某个主机中。这就是Cocoapods集中化的原因。框架“的开发人员负责创建并支持该文件。.podspec描述了关于框架的元信息,如依赖项、子规范它的主要部分是source,它告诉Cocoapods源代码所在的位置,这些源代码将被下载到Pod项目中。Cocoapods使用工作空间自动化构建过程并管理隐式依赖项。Cocoapods将所有必要的信息设置到您的消费者项目中(如搜索pats等)。当您构建消费者项目Xcode pull pod并将其组装在一起时。

一个月三次

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

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

Local podspec(https://stackoverflow.com/a/57812997/4770877)
CocoaPods version(https://stackoverflow.com/a/59218883/4770877)
iOS Dependency manager(https://stackoverflow.com/a/59257708/4770877)
CocoaPods source_files(https://stackoverflow.com/a/59257783/4770877)

pcrecxhr

pcrecxhr3#

我可以对其他的答案做一些补充,你也可以通过提供本地路径来安装一个本地pod文件。

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

即使你可以从git源代码安装pod文件,你也可以 checkout 你想要的分支。

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

相关问题