如何解决Swift模块稳定性:Swift X.Z编译器无法导入使用Swift X.Y编译的模块
让我们先从现有的问题开始,
Module compiled with Swift 5.1 cannot be imported by the Swift 5.1.2 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)
使用Swift 5.2.4编译的模块无法由Swift 5.3导入 编译器
该框架是在较低版本的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,它解释了快速的二进制框架(时间码:17:00)。
简而言之,您的框架
- 应将
Build Libraries for Distribution
设置为Yes
- 以
.xcframework
的形式分发,其中包含模拟器和设备的变体
您需要确保.xcframework
内嵌的框架都在.swiftinterface
文件夹中包含Modules/<name>.swiftmodule
文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。