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 中针对 iOS 7 部署目标的 LaunchImage 警告
Xcode:LLVM 7.0:禁用警告“模块的伞头不包括头”