第三方ObjC框架依赖于Swift应用内的动态Cocoa框架



我需要在基于Swift的应用程序中使用Ubertesters框架。Ubertester框架也依赖于一些Cocoa框架。通常在ObjC环境中,你必须添加一些框架到链接二进制文件中,但在Swift中不再需要。然而,当我在Swift中使用Ubertester SDK时,似乎Ubertester SDK所需的Cocoa框架依赖不是动态加载的。

下面是我所做的:

  1. 我添加了Ubertester框架到工作区
  2. 我创建了伞头,并导入Ubertester sdk(我可以看到Ubertester类进入Swift代码)。
  3. 我没有添加由Ubertester要求的Cocoa依赖框架到链接二进制文件。

尝试在设备或模拟器上运行失败:

    ld: warning: relocatable dylibs (e.g. embedded frameworks) 
     are only supported on iOS 8.0 and later (@rpath/libswift_stdlib_core.dylib)
     Undefined symbols for architecture i386:
  "_AudioServicesPlaySystemSound", referenced from:
      -[Ubertesters playSystemSound:] in UbertestersSDK
  "_OBJC_CLASS_$_ASIdentifierManager", referenced from:
      objc-class-ref in UbertestersSDK ...

知道如何调试这个错误吗?

谢谢

看起来你在模拟器上运行的是比iOS 8更老的东西,而你的库不支持这种架构和操作系统的组合。

尝试在项目的目标上更改部署目标到iOS 8,看看它是否启动。与此同时,我会检查一下你是否有最新版本的SDK。

最新更新