【问题标题】:When compiling with Xcode14 I get Error unsupported Swift architecture. How to solve this?当使用 Xcode14 编译时,我得到错误不受支持的 Swift 架构。如何解决这个问题?
【发布时间】:2022-12-17 17:31:24
【问题描述】:

切换到 xcode 14 构建系统后。为我们的 pod 框架生成的标头开始看起来像这样:

#if 0
#elif defined(__arm64__) && __arm64__
// Generated by Apple Swift version 5.7 (swiftlang-5.7.0.127.4 clang-1400.0.29.50)
... bridging for arm64
#else
#error unsupported Swift architecture
#endif
#if 0
#elif defined(__x86_64__) && __x86_64__
// Generated by Apple Swift version 5.7 (swiftlang-5.7.0.127.4 clang-1400.0.29.50)
... bridging for x86
#else
#error unsupported Swift architecture
#endif

如果我查看标题,我会看到以下情况:

arm64 定义和 x86 定义 - 应该没问题 arm64 已定义而 x86 未定义 - 应该是错误的 arm64 未定义而 x86 定义 - 应该是错误 因此,为避免错误,应定义两种体系结构。这导致客户端应用程序构建失败并出现错误:错误不受支持的 Swift 体系结构。

即使 ONLY_ACTIVE_ARCH = 0,这也可能应该是修补程序。我仍然收到此错误。

有谁知道为什么预编译头文件现在需要两种架构。以及如何修复构建错误?

【问题讨论】:

  • 你找到任何解决方案了吗?我们遇到了同样的问题

标签: ios swift xcode build xcode14


【解决方案1】:

对我们有帮助的解决方案:

在构建框架时,我们使用 -arch arm64-arch arm64 并为不同的体系结构构建框架,然后加入它们。

Apple 更改了他们生成桥接标头的方式,由于我附加的标头格式有问题,此解决方案失败。

我们的解决方案就是删除 -arch 并构建 fat 框架。

【讨论】:

    【解决方案2】:

    如果你的Mac芯片是M2或者M1,可以尝试使用XCode的Rosetta模式编译。

    【讨论】:

    • 更改为“Rosetta”并不能解决问题。
    猜你喜欢
    • 2018-10-27
    • 1970-01-01
    • 2021-09-19
    • 2020-05-12
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    相关资源
    最近更新 更多