pod install vs. pod update

Introduction

很多人似乎认为 pod install 只在第一次配置项目时使用,之后便使用 pod update 。但是事实并非如此。

这篇教程的目标时解释什么时候该使用 pod install,什么时候该使用 pod update.

Too long; Don’t read

  • 当安装一个新的 pods 时,使用 pod install .即使你已经有一个 Podfile 并且运行过 pod install ; 即使你只是从已经使用了 CocoaPods 的项目添加/移除 pods 。
  • pod update仅仅只在你想要更新 pods 到更新的版本时.

Detailed presentation of the commands

installupdate 事实上并不是 CocoaPods 的特定词汇,它的灵感来自许多其他依赖管理器,如 bundlerRubyGemscomposer,它们具有类似的命令,具有与本文档中描述的完全相同的行为和意图。

pod install

它在第一次要检索项目的pod时使用,同时在每次编辑 Podfile 以添加、更新或删除Pod时使用。

  • 每次运行 pod install命令 - 并下载并安装新pod时 - 它会在Podfile.lock文件中为每个pod写入已安装的版本。此文件跟踪每个pod的已安装版本并锁定这些版本。

  • 运行pod install时,它仅解析Podfile.lock中尚未列出的pod的依赖项.

    1. 对于Podfile.lock中列出的pod,它会下载Podfile.lock中列出的显式版本,而不尝试检查是否有更新的版本.
    2. 对于尚未在Podfile.lock中列出的pod,它会搜索与Podfile中描述的版本匹配的版本(像是:pod 'MyPod', '~>1.2')

pod outdated

当运行 pod outdated时,CocoaPods 将列出所有具有比 Podfile.lock(当前版本)中列出的版本更新的版本的pod。这代表着如果在这些pod上运行pod update PODNAME,它们将会更新.只要新版本仍然符合你在 Podfilie中设置的像 pod 'MyPod', '~>x.y'的限制。

pod update

当您运行pod update PODNAME时,CocoaPods将尝试查找pod PODNAME的更新版本,而不考虑Podfile.lock中列出的版本。它会将pod更新为最新版本(只要它与Podfile中的版本限制相匹配)。

如果您运行没有pod名称的pod update,CocoaPods 会将Podfile中列出的每个pod更新为最新版本。

Intended usage

使用pod update PODNAME,你将只能更新特定的pod(检查是否存在新版本并相应地更新pod)。相反,pod install 不会尝试更新已安装的pod版本。

将pod添加到Podfile时,应该运行pod install而不是pod update - 在这个安装这个新pod的过程中不会有更新现有的pod的风险。

只有在当你要更新特定 pod(或所有pods)的版本时才使用 pod install