`pod repo update` 是什么意思?

107

我正在跟随一份有关Firebase的网络教程,其中涉及了一些命令行工作。我对命令行比较熟悉,但不熟悉Cocoapods。我运行了pod repo update,但之后发现我在我的Mac的整个Documents文件夹上运行了它,而不是包含我的项目的文件夹。它执行了超过20分钟,并且最终输出了成千上万个东西,其中包括“create”和“deleted”。我有点担心-这个命令除了Firebase项目以外是否修改了我的Documents中的任何内容?那么pod repo update到底是做什么用的呢?


3
@Roope 我确实读了那份文档。只是因为在“文档”文件夹中没有 podfile,而是埋藏在几层文件夹中,所以我不太清楚会发生什么。 - A Tyshka
2个回答

136
根据文档pod repo update,它会更新位于你的主文件夹~/.cocoapods/repos中的规格源列表。如果省略NAME,则会更新本地克隆的规格库。 repo基本上是所有可用Pod和版本的列表。我刚刚在我们的CI构建中遇到了一个错误,因为该repo没有包含我刚添加的库的规范。通过运行pod repo update,它现在知道了这个更新版本,并且可以继续安装它。
所以回答您的问题... 在您的文档文件夹中运行pod repo update不会对该文件夹执行任何操作。它只会更新~/.cocoapods/repos文件夹中的pod规范引用。

2
是的,您仍然需要调用pod repo update命令,CocoaPods会下载存储库详细信息,无论您是否在项目中使用源代码控制,它都需要加载Pod列表及其版本。 - Scriptable
8
Cocoapods维护有一个清单(repo),包含所有的pods、它们在Github上的发布链接、详细信息等内容,并将其下载/索引到~/.cocoapods/repos文件夹中。因此,当您安装它时,它会获取当前可用的pods/库列表。几个月后,如果Swift更新到新版本,则需要支持该Swift版本的更新pod。但是本地的Cocoapods并不知道这个更新版本。所以您运行pod repo update,Cocoapods将更新其可用库列表。 - Scriptable
1
仅需运行构建,不会在构建时包含该库。 - Scriptable
你知道 "platform :ios, '12.0' " 应该是什么吗?它是否应该设置为我们在构建设置中设置的部署目标? - isJulian00
1
@izzyMachado,应该是您支持的最低iOS版本。对于一个新项目,您可能可以将其保留为12。 - Scriptable
显示剩余8条评论

21
主 Specs 存储库只是所有 PodSpec 的列表。PodSpec 是:
规范描述了 Pod 库的版本。它包括有关应从何处获取源代码(哪个标签、提交或分支)、使用哪些文件、应用哪些构建设置以及其他一般元数据(例如名称、版本和描述)的详细信息。
specs 目录只是所有不同 PodSpec 的列表。每个 PodSpec 的版本都在一个标签目录下。该存储库不包含 pod 本身,只包含 PodSpec。PodSpec 给出了存储库的位置和许多其他元数据。⚡︎
spec.source = { :git => 'https://github.com/tonymillion/Reachability.git', :tag => 'v3.1.0' }

当你执行pod repo update时,你会从https://github.com/CocoaPods/Specs拉取最新的PodSpecs(而不是实际的pod)。如果你只想更新单个pod源,那么只需执行pod repo update [NAME]Cocoapods/Specs主仓库:

enter image description here

一些 Alamofire PodSpecs 的列表

enter image description here

一个 单个的PodSpec 4.7.3:

enter image description here


⚡︎: PodSpec: 一个规范描述了一个 Pod 库的版本。它包括从哪里获取源代码、使用哪些文件、应用哪些构建设置以及其他一般元数据,如名称、版本和描述等细节。
你的实际项目通过pod updatepod install将代码引入,然后物理文件会被下载到你的Mac并复制到你的项目中。
经常会出现这个错误:

None of your spec sources contain a spec satisfying the dependencies: AlamoFire (= 11.0.3), AlamoFire (= 11.0.3).

You have either: * out-of-date source repos which you can update with pod repo update or with pod install --repo-update. * mistyped the name or version. * not added the source repo that hosts the Podspec to your Podfile.

Spec sources很重要。它只是意味着你没有拉取规格。你可以通过执行pod repo轻松查看你拥有的规格源。我的是:
cocoapods
- Type: git (remotes/origin/master)
- URL:  https://github.com/CocoaPods/Specs.git
- Path: /Users/mfaani/.cocoapods/repos/cocoapods

private_pods
- Type: git (master)
- URL:  git@github.company.com:xyz/private_Cocoapods.git
- Path: /Users/mfaani/.cocoapods/repos/private_cocoapods

trunk
- Type: CDN
- URL:  https://cdn.cocoapods.org/
- Path: /Users/mfaani/.cocoapods/repos/trunk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接