oc和swift混编时遇到的坑

我们的项目用的是oc,然后因为开源库的原因,我们的项目中也用到了swift,某天在联机调试的时候,Xcode报了一个很神奇的错误

dyld: Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: /var/containers/Bundle/Application/295BD35B-CF6C-4769-B29F-116D60E4E4C5/PPStocks.app/PPStocks
  Reason: no suitable image found.  Did find:
    /private/var/containers/Bundle/Application/295BD35B-CF6C-4769-B29F-116D60E4E4C5/PPStocks.app/Frameworks/libswiftCore.dylib: mmap() errno=1 validating first page of '/private/var/containers/Bundle/Application/295BD35B-CF6C-4769-B29F-116D60E4E4C5/PPStocks.app/Frameworks/libswiftCore.dylib'

google了一下,找到了一个很有用的链接
dyld: Library not loaded: @rpath/libswiftCore.dylib
里面有人提到了一个很关键的build setting

Embedded Content Contains Swift Code

这个设置项一定要设置为YES

官方的QA这里,说得很清楚了,这个设置项就是为了让Xcode知道,你的App需要ocswift混编了,把swift相关的库打包到你的App中。

然而,Xcode是一个坑货,即使你的设置项是对的,还是可能会遇到这个提示。解决的办法是:

  1. 先设置为NO
  2. build一次到手机,肯定会crash
  3. 设置为YES
  4. clean一下
  5. build一次,问题解决了

注:这个问题必现场景是,当你的证书重新revoke后,再次编译,必现

推荐阅读更多精彩内容

  • 一个人无聊的时候就想写点什么,也算是自己与自己的对话吧。或许就在谢谢对话中,我可以发现自己真正想要的是什么,或者说...
    林诗洛阅读 188评论 0 0
  • 没错,我是在听宋冬野的斑马,斑马,2016年过去了,发生了好多不幸的事,自己经历了从一个依赖的孩子慢慢蜕变成了要自...
    老勺儿阅读 47评论 0 0
  • 淄博两天的会议结束了,同学中我是昨天早上第一个来的,今天最后一个离开的。学姐文艳在送我和现发助教去火车站的路上问我...
    卜芳阅读 62评论 2 7