【发布时间】:2019-05-05 10:02:15
【问题描述】:
我最近遇到了一个令人不安的问题,这与在一个项目上运行测试有关,该项目具有 cocoapods 依赖于一个框架,该框架在运行时崩溃并出现错误:
库未加载:@rpath/libswiftSwiftOnoneSupport.dylib 引用自:MyCocoapodsDependency
还有其他关于该特定问题的 stackoverflow 主题,但它们都没有解决根本原因(例如 here),即在测试构建的“复制 swift 标准库”步骤中,缺少的库是没有复制过来。
看起来像这样(这是我构建测试时的构建日志):
当它看起来像这样(这是使用完全相同的依赖项的测试应用程序的构建日志):
OnOneSupport 似乎与与“整个模块优化”有关的项目设置有关。
但即使我改成“not onOne”也没有什么不同。 https://github.com/apple/swift/blob/master/cmake/modules/AddSwift.cmake中引用了dylib
我一生都无法弄清楚为什么它在标准库构建步骤中为一个目标而不是另一个目标省略,但很明显我的测试需要它。有人知道我如何强制编译器包含 SwiftOnoneSupport 吗?
解决方法
将构建阶段添加到将 libswiftSwiftOnoneSupport.dylib 复制到框架的测试目标(在项目文件中)。 dylib 可以在以下位置找到:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/bitcode_strip /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator/ libswiftSwiftOnoneSupport.dylib
【问题讨论】:
-
看看我的答案stackoverflow.com/a/54034898/191744添加继承! :search_paths 和更改 post_install 中的嵌入式 swift 库对我有用
标签: swift build cocoapods standard-library