Swift版本冲突:编译器不支持该SDK,请选择与SDK匹配的工具链

问题描述 投票:0回答:3

我正在使用 xCode 13.1 和 macOS 12.0.1 Monterey。我添加了

KingFisher
并将其从我的 Pod 中删除。但我的项目不再建立了。我的本地 SDK 之一遇到此错误:

Failed to build module 'CbSdk';
this SDK is not supported by the compiler (the SDK is built with 'Apple Swift version 5.4
(swiftlang-1205.0.26.9 clang-1205.0.19.55)', while this compiler is 'Apple Swift version 5.5.1 
(swiftlang-1300.0.31.4 clang-1300.0.29.6)'). Please select a toolchain which matches the SDK.

我已经做了但没有成功的事情:

  • pod deintegrate
    pod install
  • 重新启动 xCode 并清除缓存并
    DerivedData
  • 签出之前有效的旧分支并提交。
  • 将代码移至另一台之前可以运行的 MacBook。
  • 下载、安装并选择工具链5.4(出现奇怪的错误->)
  • 将我的目标和项目的 swift 编译器语言更改为 swift 4(它表示您再次使用 swift 5.5.1!)
  • 注意我没有更新 xcode 或 swift!
swift xcode cocoapods conflict
3个回答
6
投票

摘自此 Twitter 帖子。

您需要在框架目标上设置 BUILD_LIBRARY_FOR_DISTRIBUTION 构建设置

https://www.swift.org/blog/library-evolution/

https://developer.apple.com/videos/play/wwdc2019/416/


3
投票

当我尝试更新库时,我遇到了同样的问题。我的 Xcode 版本是

13.2
,而 swift 版本是
5.5.2
。但我想要更新的库需要一个 swift 版本
of 5.7.0
。在 Xcode 中使用工具链可能是解决方案,但我决定使用最新版本更新 Xcode。

我将 Xcode 更新到最新版本

14.1
,问题已解决。自动在最新的 Xcode 上找到 swift 版本。


0
投票

就我而言,我正在开发一个在内部使用第 3 方 Swift 包的框架。最初,我以为这个错误是因为我升级到 Xcode 15 而引发的。结果,它完全无关。

如果您使用第 3 方库并想要导出框架,则必须在导入前面包含“@_implementationOnly”标签。

示例:“@_implementation仅导入 BoltsSwift”。

如果您这样做,它不会将这些第三方库导入包含在框架内的二进制模块中。这很棒,因为框架的用户不关心后端使用的第 3 方库。希望这对至少一个人有帮助!我很少在网上看到有关 @_implementationOnly 标签的任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.