小编典典

Xcode 12.3:为 iOS 模拟器构建,但链接和嵌入式框架是为 iOS + iOS 模拟器构建的

all

我有一个使用链接和嵌入式自定义框架的应用程序。在 Xcode 12.2 之前,该应用程序为 iOS 设备和模拟器正确构建。但是,从 Xcode 12.3
开始,我收到以下错误:

Building for iOS Simulator, but the linked and embedded framework 'My.framework' was built for iOS + iOS Simulator.

该框架是为设备和模拟器构建的(正如错误实际上所说)并使用 合并lipo,因此它应该能够在任何地方运行而不会出现问题。

我在这里错过了什么吗?Xcode 12.3 是否有任何相关变化?


阅读 88

收藏
2022-07-31

共1个答案

小编典典

恐怕这实际上是正确的错误,框架不应该同时包含 iOS 和 iOS 模拟器代码。苹果试图强迫我们XCFramework为此目的使用 s。他们从 XCode
11 开始,只是收紧了限制。

解决此问题的唯一正确方法是将框架重建为XCFramework。这很容易做到:

$ xcrun xcodebuild -create-xcframework \
    -framework /path/to/ios.framework \
    -framework /path/to/sim.framework \
    -output combined.xcframework

您可以从组合.framework的框架的两个副本开始,并使用lipo从与不同 SDK 关联的二进制文件中删除切片。

基于 Apple
here的原始答案。

我的特殊情况是我在使用生成这些框架的罗马时遇到了这个错误(一个可能的解决方案在这里)。此外,迦太基方面正在进行很多挣扎。

希望有帮助;)

2022-07-31