Swift 5应用程序是否只能在特定的iOS版本上运行?

rox*_*neM 8 abi ios swift swift5

最近我读了一些关于Swift 5是ABI Stable的文章(这基本上意味着你不需要在应用程序包中打包应用程序自己的Swift动态库版本),这里有一个令人困惑的部分:

因为Swift将嵌入iOS操作系统中.

现在听起来像Swift Dynamic Library现在可以直接进入iOS.这是否意味着编译Swift 5的Apps将只能在特定的iOS版本上运行?

Rob*_*ier 12

你是在正确的轨道上,但重点是该应用程序只能在特定的iOS版本或更高版本上运行.ABI稳定性的整个目标是允许使用一个版本的Swift编译的Swift二进制文件(即应用程序)能够与使用不同版本的Swift编译的二进制文件(即框架)进行互操作.

但是,是的,为了利用ABI稳定性,您的应用程序将只能在iOS 13(或任何版本)或更高版本上运行.

这就是ObjC(以及C和C++以及大多数语言)中的工作方式.我可以在iOS 10上构建我的Objective-C应用程序,并期望它可以毫不费力地在iOS 11上与Foundation和UIKit链接.今天你不能用Swift库做到这一点.

  • 我想知道Swift 5是否能够在应用程序包中包含Swift Dynamic Library以向后兼容旧的IOS版本,然后iOS可以在不需要它的iOS版本的安装时删除它. (2认同)
  • 如果您在定位早期iOS版本时上传bitcode,他们可能会这样做.在这种情况下,他们可以重建您的应用程序,以链接到嵌入式库或系统库,具体取决于用户的操作系统版本.(有可能会有阻止它的东西,但我希望bitcode应该支持它.) (2认同)
  • 苹果历史上巧妙地管理过渡IMO(68K - > PPC,PPC - > x86,MacOS 9 - > OS X)我怀疑他们会以某种方式支持使用Swift 5.0构建的应用程序的向后兼容性.Bitcode可能确实是他们如何实现这一目标. (2认同)