CocoaPods如何只安装一个新库

时间:2015-02-18 17:31:25

标签: ios xcode cocoapods

我的Pod文件中有一个库列表。我决定在Pod文件中添加新的。但我想保留以前的所有图书馆没有更新,只需安装(添加)这个库

pod 'JSAnimatedImagesView', '~> 1.0.0'

所以pod updatepod install将所有库更新到较新版本,但我不想更新它们只需安装pod 'JSAnimatedImagesView', '~> 1.0.0'

6 个答案:

答案 0 :(得分:95)

pod install --no-repo-update

这会安装新项目而不更新现有的repos(版本化或不版本化)。

如果您有大量的回购并希望快速安装新商品,它也会更快。

答案 1 :(得分:3)

(截至2019年3月15日)

要安装1个新Pod:将1个所需的新Pod添加到Podfile中。然后运行:

pod install --no-repo-update

运行此命令时,它将不更新其他任何广告连播

答案 2 :(得分:2)

如果您不想更新特定的库,则应将其锁定在要保留的版本

pod 'AFNetworking', '1.2.0'
pod 'JSAnimatedImagesView', '~> 1.0.0'

AFNetworking保留在V1.2.0上,但获取最新的JSAnimatedImagesView

这使podfile可以转移到其他位置(和开发人员),并使您免于忘记恢复podfile,直到您打算更新pod

答案 3 :(得分:1)

当开始使用项目时,您可能希望使用最新版本的Pod。如果是这种情况,只需省略版本要求。

pod 'SSZipArchive'

稍后在项目中,您可能希望冻结到Pod的特定版本,在这种情况下,您可以指定该版本号。

pod 'Objection', '0.9'

更多信息http://guides.cocoapods.org/syntax/podfile.html#pod

答案 4 :(得分:1)

您可以尝试使用更新命令https://guides.cocoapods.org/terminal/commands.html#pod_update

pod update [POD_NAMES ...]

更新指定POD_NAMES标识的Pod。如果未指定POD_NAMES,则会更新所有Pod,忽略Podfile.lock的内容。

答案 5 :(得分:0)

将新的pod repo添加到您的podfile并使用下面的命令

pod install

示例表格来源pod install vs. pod update

场景示例

这是一个场景示例,用于说明在项目生命周期中可能遇到的各种用例。

第1阶段:User1创建项目

user1创建一个项目,并希望使用pod A,B,C。他们使用这些pod创建Podfile,然后运行pod install。

这将安装pod A,B,C,我们说它们都是1.0.0版本。

Podfile.lock将跟踪它,并注意A,B和C各自安装为版本1.0.0。

顺便说一句,因为他们第一次运行pod安装并且Pods.xcodeproj项目还没有存在,该命令还将创建Pods.xcodeproj和.xcworkspace,但是&#39 ;命令的副作用,而不是它的主要作用。

第2阶段:User1添加新广告连播

稍后,user1想要将pod D添加到他们的Podfile中。

因此他们应该在之后运行pod安装,这样即使pod B的维护者在第一次执行pod安装后发布了他们的pod版本1.1.0,该项目将继续使用版本1.0.0 - 因为只有user1想要添加pod D,而不会有意外更新到pod B的风险。

有些人错误之处,因为他们在这里使用pod更新 - 可能会认为这是"我想用新的pod更新我的项目&#34 ;? - 而不是使用pod安装 - 在项目中安装新的pod。

第3阶段:User2加入项目

然后,之前从未参与过该项目的user2加入了团队。他们克隆存储库然后使用pod install。

Podfile.lock的内容(应该提交给git repo)将保证它们将获得完全相同的pod,其版本与user1使用的完全相同。

即使版本1.2.0的pod C现在可用,user2也将获得版本1.0.0中的pod C.因为那是在Podfile.lock中注册的内容。 Pod C由Podfile.lock锁定到1.0.0版本(因此该文件的名称)。

第4阶段:检查广告连播的新版本

稍后,user1想要检查是否有可用于pod的更新。他们运行pod过时,告诉他们pod B有一个新的1.1.0版本,pod C有一个新的1.2.0版本发布。

user1决定他们想要更新pod B,但不是pod C;所以他们将运行pod更新B,它将B从版本1.0.0更新到版本1.1.0(并相应地更新Podfile.lock)但将保持pod C版本1.0.0(并且不会将其更新为1.2.0)。

相关问题