我知道下面的命令将更新一个pod: pod update <podname>。然而,这也会更新你之前安装的其他pod(没有包含在update命令中的pod)的依赖关系。是否有一种方法可以更新单个pod而不影响所有其他依赖?
当前回答
只是说:
吊舱安装-用于安装新的吊舱,
Pod更新-用于更新现有的Pod,
pod更新podName -只更新特定的pod而不涉及其他pod,
pod update podName versionNum -用于更新/降级特定的pod,而不涉及其他pod
其他回答
我使用cocoapods 1.0.1版本,并使用pod更新pod名称完美地工作。不会更新其他pod,只更新您进入的特定pod。
只是说:
吊舱安装-用于安装新的吊舱,
Pod更新-用于更新现有的Pod,
pod更新podName -只更新特定的pod而不涉及其他pod,
pod update podName versionNum -用于更新/降级特定的pod,而不涉及其他pod
你不可能得到100%的隔离。因为一个pod可能有一些共享的依赖项,如果你试图更新你的单个pod,那么它也会更新其他pod的依赖项。如果可以,那么:
tl;博士使用:
pod update podName
为什么?阅读下面。
pod更新将不尊重podfile.lock。它将覆盖它-有关的单一豆荚 Pod安装将尊重podfile。但是会尝试安装podfile中提到的每个pod,基于它锁定的版本(在podfile .lock中)。
下面的图表有助于更好地理解两者的区别:
主要问题来自~>也就是乐观操作符。
在Podfile中使用精确的版本是不够的
有些人可能认为,在他们的Podfile中指定pod的确切版本,如pod 'A', '1.0.0',足以保证每个用户与团队中的其他人拥有相同的版本。
然后他们甚至可能使用pod更新,即使只是添加一个新的pod,认为它永远不会冒险更新其他pod,因为它们被固定到Podfile中的特定版本。
但事实上,这并不足以保证上述场景中的user1和user2总是获得所有pod的完全相同版本。
一个典型的例子是,如果pod A对pod A2有一个依赖——在A.podspec中声明为依赖'A2', '~> 3.0'。在这种情况下,在Podfile中使用pod 'A', '1.0.0'确实会迫使user1和user2始终使用pod 'A'的1.0.0版本,但是:
user1可能会在3.4版本中使用pod A2(因为这是当时A2的最新版本) 而当用户2在加入项目时运行pod install时,他们可能会在3.5版本中获得pod A2(因为A2的维护者可能在此期间发布了新版本)。 这就是为什么确保每个团队成员在每个人的电脑上使用相同版本的pod的唯一方法是使用Podfile。锁定并正确使用pod安装和pod更新。
上面的摘录都来自pod安装和pod更新
我也强烈建议你看看播客是怎么做的。锁做
这是一个异常值,不太可能是OP正在处理的问题,但是如果您在计算机上使用本地pod, pod update <podname>将在所有情况下都不起作用。
在这种情况下,只有在podspec文件发生更改时才会触发pod更新。但是,做一些改变也可以让吊舱安装正常工作。
在这种情况下,您可以只修改一些较小的内容,例如只修改一个字母的描述或摘要,然后就可以成功地运行install或update命令。
要安装一个单独的pod而不更新现有的->将该pod添加到您的Podfile并使用:
pod install --no-repo-update
删除/更新特定的pod使用:
pod update POD_NAME
测试!
推荐文章
- 删除/重置核心数据中的所有条目?
- 目标……重写“Pods/Pods.xcconfig”中定义的“OTHER_LDFLAGS”构建设置
- 架构arm64未定义的符号
- Pod安装保持在“设置CocoaPods主repo”状态
- 从路径字符串中提取文件名
- CSS打印:避免在页面之间减半div ?
- 如何在不接触其他依赖项的情况下更新单个pod
- 如何检查CocoaPods框架的版本
- 运行时出现“未知类<MyClass> in Interface Builder file”错误
- 运行pod设置给我“坏的解释器:没有这样的文件或目录”错误
- "@private"在Objective-C中是什么意思?
- 错误:错误安装cocoapods:错误:未能建立gem本地扩展
- 如何在Cocoa中将堆栈跟踪输出到控制台/日志?
- ld:框架没有找到Pods
- Core Data vs SQLite 3