库文件的Swift版本兼容性问题

8
我正在为其他开发者分发库(http://empiric.al)。我注意到在Swift的不同版本之间,即使是2.0到2.1,我也会遇到“Module file was created by a (newer/older) version of the compiler.”的问题。
我需要以一种未来可靠的方式进行分发。
我该如何确保我的编译框架可以被未来更高版本的Swift使用,以便我不必在苹果发布新的测试版时重新编译?
2个回答

11

来自苹果公司的网站

二进制兼容性和框架

虽然您的应用程序的运行时兼容性得到保证,但Swift语言本身将继续发展,并且二进制接口也会发生变化。为了安全起见,您应该使用相同版本的Xcode和Swift编译器构建应用程序的所有组件,以确保它们可以协同工作。

这意味着需要仔细管理框架。例如,如果您的项目使用框架与嵌入式扩展共享代码,则需要一起构建框架、应用程序和扩展。依赖使用Swift的二进制框架(尤其是来自第三方)是很危险的。随着Swift的更改,这些框架将与您的应用程序的其他部分不兼容。当二进制接口在一两年内稳定下来时,Swift运行时将成为主机操作系统的一部分,这个限制将不再存在。


3

在Swift ABI(应用程序二进制接口)稳定之前(我猜大约需要一到两年),分发能够在不同Xcode版本上运行的库的唯一方法是分发源代码。CocoaPods和Carthage都是使库分发更容易的好工具,但对于Swift代码,它们仍然依赖于可用的源代码。

可能有一种Cocoapod,可以检测与其运行的Xcode版本,并下载并提供您的库的正确构建版本,但您仍需要为您想要支持的所有Xcode版本构建库,每次苹果发布新版本的Xcode时重新编译,但至少用户不需要手动下载新版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接