我刚从Xcode 6 Beta 2升级到Xcode Beta 3,现在在构建项目时收到以下警告:
ld: warning: relocatable dylibs (e.g. embedded frameworks) are only supported on iOS 8.0 and later (@rpath/libswift_stdlib_core.dylib)
这是一个警告,但似乎意味着我当前的设置无法在iOS 7.1上运行,这是我的部署目标。如何跟踪嵌入的框架,以及如何为iOS< 8.0
答案 0 :(得分:9)
这似乎是Beta 3的错误。正如Apple工程师对此post所指出的那样。
在iOS 7.1设备上运行应用程序时,我也遇到过此警告。
答案 1 :(得分:4)
当您选择目标时,您会在项目页面上看到并添加它们:tab General-> Embedded Binaries (然后它们出现在 Build Phases-> Embed Frameworks )。
Xcode 5中提供了针对OSX 的嵌入式框架,但不适用于iOS 。
关于Xcode 6中的新功能的WWDC会议特别承诺为iOS 8提供动态框架(有人请在开发人员中心重新上线时添加引号)。到目前为止,对于所有Xcode 6测试版,我在iOS 7上使用框架编译和调试应用程序时没有任何问题。但是由于没有承诺,iOS7的框架是你不能依赖的东西(例如,这可能会停止在以后的测试版中使用;具有iOS 7嵌入式框架的应用程序可能会被拒绝等)。这可以解释为什么他们添加了明确的警告。
如果此功能确实不受支持,除了从目标中删除框架并使用静态库之外,您可以做的事情不多,就像我们使用Xcode 5一样。或者去iOS8专用路径。
答案 2 :(得分:1)
使用XCode 6.1.1后,我可以将代码放在iOS 8+ iOS7.1.2和iOS 6.1.3上虽然警告仍然存在,但应用程序在所有3个操作系统上都能正常运行
====================== 幸运的家伙......在我引用PushKit框架后,我的项目一直无法编译。
该项目是由Xcode创建的一个新项目,只有3个新功能用于测试推送通知。
解决方法是将PushKit框架设置为“嵌入式”,但这不是一个好的解决方案,因为我的工作Xcode项目将从Unity3d生成。手动进行更改将破坏自动构建过程。
答案 3 :(得分:0)
在向项目添加C ++框架(DeepBelief)后出现此错误。将空的.cpp文件添加到项目中修复它。
我正在使用Beta4,并在DeepBelief github网站上找到答案:
答案 4 :(得分:0)
该错误仍然出现在XCode6 GM和XCode6最终版本中:
好吧,无论我是否,我都会在xcode6GM中得到完全相同的问题 为swift OR objc创建框架: - [[[[[[[[[[[[[[[[
根据Apple Extension Programming Guide:
您可以为运行iOS 7或更早版本的用户提供包含应用程序,但在iOS 8或更高版本中运行时必须采取预防措施以安全地链接嵌入式框架。
谈论应用扩展,但如果你阅读它,你就可以理解这一般适用于嵌入式框架。
答案 5 :(得分:0)
使用XCode 6.1.1后,我可以将代码放在iOS 8+ iOS7.1.2和iOS 6.1.3上 虽然警告仍然存在,但应用程序在所有3个操作系统上都能正常运行
是的,无法提交应用以供审核。 不得不通过将现代框架更改为静态库来实现。
答案 6 :(得分:0)
这种情况正在发生,因为您的某个嵌入式二进制文件的部署目标低于您的应用程序目标。降低嵌入式二进制文件的构建目标并保持良好状态。
这是xcode 6.1.1中的错误原因
我正在使用xcglogger和部署目标ios 8.0,以及我的应用程序的部署目标7.0。设置xcglogger的部署目标ios 7.0并解决问题。