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后,再次编译,必现

你可能感兴趣的:(oc和swift混编时遇到的坑)