Xcode 8:使用iOS 9.3基础SDK进行编译?

我将我的iOS应用程序升级到Xcode 8.0 beta(8S128d)中的Swift 3.0。 我认为它已经准备就绪并将其上传到iTunes Connect。 当我点击“提交审核”时,它给了我一个26个错误的列表,每个嵌入式框架一个,例如:

无效的sdk值。 在MyApp.app/Frameworks/libswiftFoundation.dylib中为LC_VERSION_MIN_IPHONEOS的sdk部分提供的值为10.0,该值大于允许的最大值9.3.2。

最后一个错误:

必须使用Xcode 6或更高版本的公共(GM)版本,OS X和iOS SDK构建新的应用程序和应用程序更新。 不要提交使用测试版软件构建的应用程序,包括beta OS X版本。

好的,在升级我的应用程序之前,这会有所帮助! 我该如何提交这个应用程序?


我注意到通过将基本SDK从Xcode 7.3.1复制到Xcode 8,将项目Base SDK从iOS 10.0更改为iOS 9.3:

/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk 

然后在Xcode 8的Build Settings中更改Base SDK设置。 但是,即使我手动输入,也无法识别新的SDK (请参阅此问题) ,无论如何都要使用iOS 10.0进行编译。 有没有办法用旧的SDK编译? 或者我必须将我的代码回滚到Swift 2吗?

Xcode 8.0 Base SDK正在改变

这是快速解决方案

不要使用Xcode beta版本来提交发布的应用程序 – 这是beta的原因,不应该与生产代码一起使用。

提交应用

使用测试版Xcode创建的应用程序或专为测试版操作系统构建的应用程序将不会在App Store和Mac App Store上接受。 您提交的应用应使用Mac App Store中的最新版Xcode进行开发,并且应针对iOS,OS X和watchOS的公开版本构建 – 除非有GM种子可用。 当Xcode的GM种子可用时,使用它来开发您的应用程序以提交。 当iOS,OS X或watchOS的GM种子可用时,为这些版本构建您的应用程序。

↳https ://developer.apple.com/support/pre-release-software/

Re:好的,在我升级我的应用程序之前,这会有所帮助! 我该如何提交这个应用程序?

使用Xcode的当前版本或GM版本来构建和提交您的应用程序。

不幸的是,它似乎没有办法在Xcode Beta中更改SDK版本; 它既可能是一个错误,也可能只是一个事实,即Apple希望您将beta SDK与beta软件一起使用。 就像@ l’L’l所说,必须在稳定的Xcode中打开应用程序才能让App Store接受提交。

但是,我确实发现将项目降级为Swift 2并非过分困难。 通过手动修复Xcode 7.3中的所有错误,我花了一个小时来“降级”整个项目。 如果它会帮助任何人,我在过程中注意到的主要模式是:

  • 将函数声明更改为在第一个参数之前没有_,因为第一个参数在Swift 3中不是匿名的
  • 从所有函数调用中删除第一个参数标签,这有时涉及重命名函数(包括在委托中,有时不报告错误)
  • 更改几个内置属性,例如label.isOnlabel.on
  • 在几个对象名称之前添加NS ,例如NSData和NSTimer,它们分别成为Swift 3中的Data和Timer
  • 通过重新保存来 “降级”故事板
  • 使用Xcode-stable编译但使用Xcode-beta上传; Xcode-stable在我的配置文件中存在问题,但事实certificate,使用哪个版本从Organizer上传二进制文件并不重要