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 完美配合。
尝试过的解决方案:
- 正在将
Build Libraries for Distribution
设置为 Yes
- Shipping Binary Frameworks With Swift 5.0
重点是 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
文件。
让我们从已有的问题开始,
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 完美配合。
尝试过的解决方案:
- 正在将
Build Libraries for Distribution
设置为Yes
- Shipping Binary Frameworks With Swift 5.0
重点是 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
文件。