2

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

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

最后一个错误:

新应用和应用更新必须使用 Xcode 6 或更高版本、OS X 和 iOS SDK 的公共 (GM) 版本构建。不要提交使用 beta 软件构建的应用程序,包括 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

然后更改Base SDKXcode 8 的 Build Settings 中的设置。但是,即使我手动输入它并使用 iOS 10.0 编译它,它也无法识别新的 SDK (see this question) 。有没有办法用旧的 SDK 编译?还是我必须将我的代码回滚到 Swift 2?

Xcode 8.0 基础 SDK 变更

4

2 回答 2

5

这是快速解决方案

不要使用 Xcode 测试版提交应用程序以供发布——它是测试版是有原因的,不应该与生产代码一起使用。

提交应用程序

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

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

回复:好的,在我升级我的应用程序之前知道这会很有帮助!我将如何提交这个应用程序?

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

于 2016-06-22T00:56:46.487 回答
2

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

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

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