问题 XCode 8,Swift 2.3 存档版本在 IOS 9.2.1 -> IOS 9.0 上启动时崩溃

Posted

技术标签:

【中文标题】问题 XCode 8,Swift 2.3 存档版本在 IOS 9.2.1 -> IOS 9.0 上启动时崩溃【英文标题】:Issue XCode 8, Swift 2.3 Archived Version crashing on launch on IOS 9.2.1 -> IOS 9.0 【发布时间】:2017-01-30 16:41:53 【问题描述】:

我使用 XCode 8.0 将我的应用程序从 Swift 2.2 更新到 Swift 2.3,并进行了最小的更改

在调试或发布构建配置中从 XCode 运行一切正常

ios 设备 9.2.1 及更低版本(即席或开发配置文件)上测试导出的存档时,我遇到了崩溃

SpringBoard[54] <Warning>: BSXPCMessage received error for message: Connection invalid
SpringBoard[54] <Warning>: BSXPCMessage received error for message: Connection invalid
timed[58] <Notice>: (Note ) CoreTime: Current mcc: '0' simulated:'0'.
SpringBoard[54] <Warning>: HW kbd: Failed to set (null) as keyboard focus
<Error>: error evaluating process info - pid: 1038, puniqueid: 1038
(UIKitApplication:) <Notice>: Service exited due to signal: Segmentation fault: 11. 

这意味着它正在尝试访问无效的内存。

我已尝试写入 NSLog 并进行跟踪,但无法找到崩溃的点。

我怀疑这可能与 XCode 7-8 的 Storyboard 更改有关。

我一直在寻找这个错误的搜索时间已经很长时间了,因为我每次都必须创建一个存档。 95% 的时间它会在启动时崩溃,但有时我会成功启动。

我在运行 IOS 9.3 或 IOS 10 的设备上启动没有问题

----- 更新----

我下载了 XCode 8-1 测试版,这也解决了我的问题。

所以要么使用 Xcode 7.3 或 8.1 beta+,但不要使用 8.0。我浏览了 8.1 beta 的发行说明,但没有看到有关此问题的内容。

----- 更新----

更新到 8.1 时向 @KoCMoHaBTa 发出提示,此问题已解决,除非您还将部署目标更改为 9.0,此时该问题再次发生。

【问题讨论】:

我们有同样的问题。目前还不清楚是什么原因,但 Xcode 8.1 GM 似乎解决了这个问题,直到我们将部署目标提高到 iOS 9.0。在此之前我们支持 iOS 8.3。因此,当我们提高部署目标时 - 它开始在 Xcode 8.1 GM 中再次崩溃。 @KoCMoHaBTa 这是一个可怕的消息,它只在 9.0 -> 9.2.1 中崩溃吗? 它在 9.2.1 上崩溃了。我们无法在 9.0 上进行测试,因为我们没有这样的设备。 Ofc 在模拟器上运行良好。 @KoCMoHaBa 我的结果和你一模一样,工作正常,直到我改成 9.0 【参考方案1】:

我参加聚会可能有点晚了,但我们已经研究这个错误 2 天了。以下 *** 帖子为我们修复了它:Xcode 8 build crash on iOS 9.2 and below

它还解释了 iOS 9.3 的不同之处在于将其作为 iOS 版本的部署目标“神奇地”解决了所有问题

这可能值得一试;)

【讨论】:

我有机会测试后将其标记为答案【参考方案2】:

最终,由于未知原因,随机崩溃再次开始出现,即使我们已将部署目标设置为 8.4。

所以最后我们结束了将部署目标提高到 iOS 9.3,从而消除了受影响版本上的应用使用。

很遗憾,我们目前无法过渡到 swift 3,因此这也是一种选择。

【讨论】:

感谢您的更新,是否所有 IOS 版本都发生随机崩溃? 仅适用于 9.2.1 的设备。

以上是关于问题 XCode 8,Swift 2.3 存档版本在 IOS 9.2.1 -> IOS 9.0 上启动时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

我编译 Swift 2.3 项目并在 Xcode 8.1 上有这个问题

我如何通过 swift 2.3 项目支持 iOS 版本 10.3

Xcode 8 构建成功但存档失败

从 Xcode 6.3 上传的存档的 iTunes Connect 错误:包含无效的 Swift 版本

使用 swift 2.3 从 xcode 8 中的命令行运行 xcode ui 测试

如何在 XCode 8 Playgrounds 中使用 Swift 2.3?