鉴于目前 Xcode 9 是测试版,而今天的主要兴趣是了解 iOS 11,这个问题无疑很奇怪......
在 Xcode 9 beta 中工作时,有没有办法将 iOS 10 定位为基本 sdk?Apple 是否需要以与 Xc8 中以前的操作系统相同的方式为 Xcode 9 打包 SDK?
为什么会想要这个?
a) 首先想到的是在一个项目中使用 Xcode 9 不错的新重构工具,该项目涉及的代码需要从 iOS 10 更改到 11,但目前必须在 iOS 10 上运行。
b) 为了实验..
使用这个和这个我能够使用 Xcode 9 beta 4 针对 SDK10.3 进行编译。有很多警告是可能的。
警告 1: Xcode GUI 似乎无法同时检测多个 iPhone SDK。所以你不能在 10.3 和 11.0 作为你的基础 SDK 之间来回切换。
警告 2: Xcode 9 附带的 swift 编译器不支持针对低于 11.0 的 iPhone Simulator SDK。如果您尝试以下操作,您将遇到此错误:
错误:Swift 不支持 SDK 'iPhoneSimulator10.3.sdk'
警告 3:即使你做了所有这些,你仍然不会被允许提交一个打算在 iOS 11 启动之前发布它的应用程序。使用旧版基础 SDK 的唯一好处是可以利用 iOS 平台中的某些特殊情况。一个值得注意的例子是后台 VoIP 套接字,还有其他几个类似的例子散布在 iOS 的历史中。
旧的 VoIP 架构在 iOS 8 中被新的基于 PushKit 的架构所取代。然后它在 iOS 9 SDK 中被正式弃用。在 iOS 10 中,它仅作为兼容性措施提供;如果您的应用程序与旧 SDK 链接,它会继续工作(和以往一样),但如果您与 iOS 10 SDK 链接,它将被禁用。
警告 4:您只能使用纯粹的 Objective-C 项目来做到这一点。10.3 SDK 和 Xcode 9 自带的 swift 编译器版本似乎有些不兼容。具体来说,这个错误:
...这是如何做到的。
通过替换此处的文件,将 Xcode 9 的 11.0 SDK 替换为 Xcode 8.3.3 的 10.3 SDK:
Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
使用此处的文件:
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
MinimumSDKVersion
在此文件中将值从 11.0更改为 10.3:
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist
Xcode 9 beta 4 允许下载和使用所有以前的模拟器。不再需要解决方法,只需单击图片中显示的“下载模拟器”菜单项(最后一项)即可下载模拟器。