“ pod安装”在Pods.project内创建了“ SWIFT_VERSION = 5.0”属性(并且该计算机上从未安装过Xcode 10.2.x)Bug?

时间:2019-06-05 16:27:21

标签: swift xcode cocoapods podspec

我属于一个团队,致力于开发一些涉及集成私有iOS框架的体系结构iOS解决方案。

该解决方案的部分核心需要CocoaPods,现在,我们对迄今为止创建的所有复杂模块定义感到非常满意。

但是我们已经隔离出一个问题,我们不知道它是否是功能,错误,已知事实……我们将在这里尽可能详细地描述它,以了解是否有人可以对此有所了解

(这在stackoverflow / CocoaPods github中将是一个交叉发布的疑问。)

编辑:Cocoapods github线程在这里:https://github.com/CocoaPods/CocoaPods/issues/8876

上下文:

我们的体系结构解决方案必须涵盖一系列iOS / Swift / Xcode版本才能进行部署。我们正在处理的最后一个认证版本是:Swift 4.0 + Xcode 10.1 + Cocoapods 1.4.0(是的,我们知道Cocoapods 1.7.1已经发布,但是我们的验证过程迫使我们仍然使用1.4.0)。

反正这是什么意思?这意味着在开发代码时,我们需要更新内部库的依赖关系,这种情况通常可以通过良好的旧“ pod安装”来解决。

此Pod安装会检查我们所有的“兄弟项目”存储库,并下载所需的任何新内部Pod,(这是重要部分),它会重新创建“ Pods”项目(这意味着它会重新创建Pods.project文件) )。

此Pods.project是大型“伞”,所有导入的框架都将存在于我们的大型解决方案中。如果我们从Xcode中浏览此Pods.project,则可以寻找“ SWIFT_VERSION”关键字。当我们这样做时,我们项目的预期(和想要的)结果是“未定义的”。

到目前为止,我们已经描述了我们希望处理的预期情况,但是几周前,当我们需要针对不同(较新)版本的“ Cocoapods”(和它的“卫星”相关宝石。

Cocoapods是我们工具包的一部分,需要定期检查,因此在某些机器中,除了我们的认证外,我们还开始安装其他cocoapods版本(1.6.0、1.6.1、1.7.0和1.7.1)。 1.4.0

是什么意思?安装不同版本的Cocoapods还会导致在后台进行其他gem安装,主要是“ fourflusher”,“ xcodeproj”等...

通常,一旦您安装了椰壳足动物1.4.0(和1.6.0、1.6.1、1.7.0和1.7.1),您最终会遇到类似问题,即安装了一个以上的Fourflusher版本(2.0.1、2.2。 0),已安装(逻辑上)多个cocoapods版本和已安装多个xcodeproj版本(通常为1.5.6、1.8.X和1.9.0)。

这到底意味着什么?

安装所有与这些可可足类有关的其他宝石的最新版本会导致以下情况(对我们而言不受欢迎):

“ pod安装”操作(预先删除了“ Pods”文件夹和“ Podfile.lock”文件)将重新创建Pods.project文件,但SWIFT_VERSION属性设置为“ 5.0(不受支持)”。为什么?

尤其是当我们从未在这些计算机上安装Xcode 10.2.X时,我们正在运行“ pod安装”

为什么xcodeproj决定在Pods.project中添加此属性(值为5.0),而在过去(例如,Xcodeproj版本1.5.6)将其保留为“未定义”?

注意:如果我们不是将cocoapods 1.7.X升级到仅cocoapods 1.6.x,则xcodeproj gem将升级到1.8.X版

此其他xcodeproj版本(1.8.X)的行为显然类似于1.9.X,但是除了添加(我们认为不需要)SWIFT_VERSION属性(其值为5.0)之外,它还创建了该属性,但其值为4.2。

如果您仅安装了Xcode 10.1,这不是问题,因为此版本的Xcode确实了解如何处理Swift 4.2,或者至少可以为您提供升级项目设置的功能。

我们的实际问题是:所有这些都是已知情况吗?为什么cocoapods / Xcodeproj 1.8.X /1.9.0决定将SWIFT_VERSION提高到4.2 / 5.0

(尤其是在5.0的情况下,这些机器上从未安装过Xcode 10.2(x))

以防万一有人认为某个同级项目可能已将内部SWIFT_VERSION设置为5.0(并且这可能是该值传播到Pods.project文件的原因),我们不得不说没有子项目/框架的SWIFT_VERSION设置为5.0

为什么我们知道这一点?因为我们在大解决方案文件夹的根目录中运行此命令

grep “SWIFT_VERSION = 5\.0” * -r 

它永远找不到任何5.0实例。

此外,在每个私有框架窗格中,我们已将s.swift_version属性手动设置为4.0。

关于“ pod安装”为什么似乎会触发Pods.project文件中的(不需要的)SWIFT_VERSION 5.0的任何提示,即使我们从未安装过任何Xcode 10.2.x也是如此? 是虫子吗?特征?已知情况?预期的情况?

0 个答案:

没有答案