Swift 模块稳定性:使用 Swift X.Y 编译的模块无法被 Swift X.Z 编译器导入

Swift Module stability: Module compiled with Swift X.Y cannot be imported by the Swift X.Z compiler

让我们从已有的问题开始,

Module compiled with Swift 5.1 cannot be imported by the Swift 5.0 compiler

Module compiled with Swift 5.1.2 cannot be imported by the Swift 5.2.4 compiler

并且,现在 XCode 12(12A7209)

Module compiled with Swift 5.2.4 cannot be imported by the Swift 5.3 compiler

框架是在Swift的低版本编译的(Swift 5.2.4)。但是,它与 XCode 12 beta 完美配合。

尝试过的解决方案:

重点是 Swift 二进制框架的 ABI 稳定性以及如何在不同的 swift 版本中实现它。

请指教。提前致谢!

您需要模块稳定性,而不是 ABI 稳定性。

差异和实现模块稳定性的方法,在此处描述:https://www.donnywals.com/what-is-module-stability-in-swift-and-why-should-you-care/

这里是WWDC session解释了swift二进制框架(时间码:17:00)。

简单地说,你的框架

  • 应将 Build Libraries for Distribution 设置为 Yes
  • Skip Install 属性 设置为 No
  • 分发为 .xcframework,具有模拟器和设备的变体

您需要确保嵌入 .xcframework 的框架在 Modules/<name>.swiftmodule 文件夹中都有 .swiftinterface 文件。