Xcode 7 警告!是为比被链接 (5.1) 更新的 iOS 版本 (5.1.1) 构建的

Posted

技术标签:

【中文标题】Xcode 7 警告!是为比被链接 (5.1) 更新的 iOS 版本 (5.1.1) 构建的【英文标题】:Xcode 7 Warning! was built for newer iOS version (5.1.1) than being linked (5.1) 【发布时间】:2015-08-28 11:56:05 【问题描述】:

我将 Xcode 6 项目升级到 Xcode 7 并开始看到警告是针对更新的 ios 版本 (5.1.1) 而不是链接 (5.1)。

如何解决此警告?

【问题讨论】:

链接到 iOS 的补丁版本时,这是 Xcode 7.0 和 7.1 的问题。将-miphoneos-version-min=5.1.1 与链接器一起使用时,它只会尊重版本的主要+次要部分(5.1)。 【参考方案1】:

在我的情况下,产生此警告是因为我的一个 XCode 子项目的 iOS-Deployment-Target (7.1) 高于我的基础项目 (7.0)。 如果您使用 cococapods,当您在 Podfile 中指定错误的 iOS 平台版本时,可能会发生这种错误配置。在我的示例中,我在我的 Podfile 中指定了

platform :ios, '7.1' 

而我将 XCode-Project 中的 Deployment-Target 设置为 iOS 7.0。将子项目的 DeploymentTarget 设置为与 BaseProject 相同的 iOS 版本可修复此警告。

【讨论】:

【参考方案2】:

更新:似乎已通过 Xcode 7.3 (7D175) 解决。我删除了 -w 标志,警告不再出现。

这似乎是 Xcode 7.0 和 7.1B1 中的一个已知错误(错误 #21813082)。

作为一种临时解决方法,为了抑制大量警告,可以将 -w 标志添加到 Build Settings -> Other Linker Flags:

    选择您的项目 选择您的目标 选择“构建设置”标签 向下滚动到“链接” 编辑“其他链接器标志”并添加“-w”

我只是将此添加到调试构建设置中,并将以下内容插入到 AppDelegate 中,就像提醒一样:​​

#ifdef DEBUG
#warning Linker warnings suppressed (-w in build settings)
#endif

这至少有助于快速发现真正的警告,而不是让构建结果淹没在每个源的相同警告中(在我的例子中,出现了 150 多个警告)。

【讨论】:

你能分享一下 Apple Bug #21813082 的文字吗?它不适用于 Open Radar openradar.appspot.com/21813082 我没有文本,我的已作为 21813082 的副本关闭。 这不是一个解决方案,它只是不显示警告:/我想最好不要实现它,这样您就可以了解与链接器相关的其他可能的重要警告。 @MihribanMinaz 这就是为什么我将其描述为解决方法并且仅将其添加到调试版本中。对于发布版本,我不使用它并检查所有警告。 对我来说不是。 7.3.1【参考方案3】:

就我而言,我将项目升级到了 iOS 6,但问题并没有消失。

然后我意识到 target 将其覆盖为 iOS 5.1.1。我清除了目标设置,警告消失了。

XCode 版本 7.0 (7A220)。

【讨论】:

【参考方案4】:

就我而言,我将项目设置为 8.4,但所有其余的子项目/目标仍为 9.0。看来是部署目标不一致造成的。

对于那些正在使用 Cocoapods 的人:

    浏览您的 Pod 项目和目标。 将所有部署目标更改为您想要的。

确保它们都相似。

【讨论】:

【参考方案5】:

尝试在“链接->其他链接器标志”上添加“-w”。

当 mySDK 构建的基础 SDK 大于开发目标 myProject 时,就会发生这种情况。

【讨论】:

【参考方案6】:

在我的情况下,项目部分 (7.0) 中的部署目标与目标部署目标 (8.0) 不同。因此,请检查项目的部署目标和项目中的每个目标是否相同。

【讨论】:

【参考方案7】:

首先更改项目下的 iOS 部署目标,然后更改目标下的部署目标。删除/Users/yourUser/Library/Developer/Xcode/DerivedData (rm -rf yourProject 处的文件)。再次安装 Pod,然后告别警告。

【讨论】:

【参考方案8】:

在我的例子中,我使用最新的 iOS 构建了库,但应用程序的部署目标低于此。所以我认为除了将 -w 添加到其他链接器标志之外我无能为力

【讨论】:

【参考方案9】:

以防万一有人和我一样感到困惑:我发现我在外部硬盘驱动器上有一个 Xcode 测试版,并且系统正在选择该驱动器上的工具而不是内部驱动器。 (大概是因为它们是较新的测试版工具?)...弹出驱动器解决了我的问题!

【讨论】:

【参考方案10】:

在我的情况下,我更改了目标中的部署目标,而没有更改项目中的相同。

为了解决这个问题,我更改了项目和目标上的部署目标,然后我进行了 pod 更新。

【讨论】:

以上是关于Xcode 7 警告!是为比被链接 (5.1) 更新的 iOS 版本 (5.1.1) 构建的的主要内容,如果未能解决你的问题,请参考以下文章

过渡到 Xcode 5 事故和丢失数据

Xcode 5.1 未使用的常量被视为错误

Xcode 中针对 iOS 7 部署目标的 LaunchImage 警告

Xcode:LLVM 7.0:禁用警告“模块的伞头不包括头”

运行项目时弹出警告,无法在选定的目标 xcode 4.5.1 上运行 [重复]

禁止 Xcode 中的 `deprecated` 警告