Swift 模块稳定性:使用 Swift XY 编译的模块无法被 Swift XZ 编译器导入

She*_*pta 4 xcode frameworks ios swift xcode12

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

使用 Swift 5.1 编译的模块无法被 Swift 5.1.2 编译器导入

使用 Swift 5.1 编译的模块无法被 Swift 5.0 编译器导入

使用 Swift 5.1.2 编译的模块无法被 Swift 5.2.4 编译器导入

并且,现在使用 XCode 12(12A7209)

使用 Swift 5.2.4 编译的模块无法被 Swift 5.3 编译器导入

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

尝试过的解决方案:

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

请指教。先感谢您!

Eug*_*nyk 5

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

这里描述了差异以及如何实现模块稳定性的方式: https: //www.donnywals.com/what-is-module-stability-in-swift-and-why-should-you-care/

这是解释 swift 二进制框架的WWDC 会议(时间代码:17:00)。

简而言之,你的框架

  • 应设置Build Libraries for DistributionYes
  • Skip Install属性设置为No.
  • .xcframework与模拟器和设备的变体一样分发

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