a)首先想到的是在涉及需要从iOS 10更改到11的代码的项目上使用Xcode 9美妙的新重构工具,但目前必须在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模拟器SDK。如果尝试,则会出现以下错误:
error: Swift does not support the 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 8.3.3 中的 10.3 SDK 替换 Xcode 9 中的 11.0 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