我们的项目用的是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
这个设置项一定要设置为YES
官方的QA在这里,说得很清楚了,这个设置项就是为了让Xcode知道,你的App需要oc和swift混编了,把swift相关的库打包到你的App中。
然而,Xcode是一个坑货,即使你的设置项是对的,还是可能会遇到这个提示。解决的办法是:
- 先设置为NO
- build一次到手机,肯定会crash
- 设置为YES
- clean一下
- 再build一次,问题解决了
注:这个问题必现场景是,当你的证书重新revoke后,再次编译,必现