gpt4 book ai didi

swift - "Copy swift standard libraries"构建步骤不包括 SwiftOnoneSupport.dylib

转载 作者:可可西里 更新时间:2023-11-01 01:07:58 26 4
gpt4 key购买 nike

我最近遇到了一个令人不安的问题,它与在一个项目上运行测试有关,该项目具有 cocoapods 对框架的依赖性,该框架在运行时因错误而崩溃:

Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib Referenced from: MyCocoapodsDependency

还有其他关于该特定问题的 stackoverflow 主题,但没有一个解决根本原因(例如 here),即在测试构建的“复制 swift 标准库”步骤中,缺少的库是没有复制过来。

看起来像这样(这是我构建测试时的构建日志):

missing dylib

它应该看起来像这样(这是使用完全相同的依赖项的测试应用程序的构建日志):

enter image description here

OnOneSupport 似乎与与“全模块优化”有关的项目设置有关。

enter image description here

但即使我改为“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

enter image description here

最佳答案

我的两个框架也有同样的问题。最奇怪的是,其中一个一切正常,但另一个却不行。

虽然我无法弄清楚为什么会发生这种情况(因为它似乎是一个 Xcode bug ),但我找到了一个非常巧妙的解决方法。

事实证明,在代码中的任何位置使用 print() 都会以某种方式强制加载 libswiftSwiftOnoneSupport.dylib。所以,通过添加这样的东西,问题应该消失了:

private func dummy() { 
print("Hello world!")
}

我使用的是 Xcode 10.1、Swift 4.2,给我这个问题的 pod 是 Nimble。

希望这对您有所帮助!

关于swift - "Copy swift standard libraries"构建步骤不包括 SwiftOnoneSupport.dylib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53605123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com