我正在为其他开发人员分发库(http://empiric.al)。我注意到在快速版本之间,即使是2.0到2.1之间,我也会得到Module file was created by a (newer/older) version of the compiler.
我需要以面向未来的方式分发。
如何确保我的编译框架将来可以被更新版本的Swift使用,所以我不必在Apple推出新测试版后立即重新编译?
答案 0 :(得分:11)
二进制兼容性和框架
虽然确保了应用程序的运行时兼容性,但Swift语言 本身将继续发展,二进制接口也将继续发展 更改。为了安全起见,应该构建应用程序的所有组件 相同版本的Xcode和Swift编译器确保它们 一起工作。
这意味着需要谨慎管理框架。例如, 如果您的项目使用框架与嵌入式代码共享代码 扩展,您将需要构建框架,应用程序和扩展 一起。依靠二进制框架是危险的 使用Swift - 特别是来自第三方。随着Swift的变化,那些 框架将与您的应用程序的其余部分不兼容。当。。。的时候 二进制接口在一年或两年内稳定,Swift运行时将会 成为主机操作系统的一部分,这种限制将不复存在。
答案 1 :(得分:2)
直到Swift ABI(应用程序二进制接口)稳定(我猜另一年或两年),分发将在不同Xcode版本中工作的库的唯一方法是分发源代码。 Cocoa pods和Carthage都是使库分发更容易的好工具,但对于Swift代码,它们仍然依赖于可用的源代码。
有可能让Cocoapod检测到它运行的Xcode版本,然后下载并提供正确的库版本,但是你仍然需要为你想要支持的所有Xcode版本构建库每次Apple发布新的Xcode时重新编译,但至少用户不需要手动下载新版本。