为啥我的更新后的应用程序在仅适用于 IOS8 的启动时崩溃?

Posted

技术标签:

【中文标题】为啥我的更新后的应用程序在仅适用于 IOS8 的启动时崩溃?【英文标题】:Why is My Updated App Crashing on Launch for IOS8 Only?为什么我的更新后的应用程序在仅适用于 IOS8 的启动时崩溃? 【发布时间】:2014-10-03 16:59:19 【问题描述】:

我最近(2014 年 10 月 2 日)提交了适用于 ios8 的应用程序的新版本。之前它在 IOS8 上启动并运行,但有一些错误,我在重新提交之前修复了这些错误:

升级了 Stripe 的 Pod,因为我使用的是旧版本,iOS8 开始出现 SSL 错误。 更新了我的 CLLocationManager 代码以使用 kCLAuthorizationStatusAuthorizedWhenInUse(因为 IOS8 不能向后兼容请求 kCLAuthorizationStatusAuthorized 状态)。 添加了一个新的非关键 Swift 视图控制器,以在同一项目/互操作性中使用 Swift 进行测试。

该应用获得了加急审核,但当新版本最终出现在应用商店时,我大吃一惊。

应用在 IOS8 设备上启动时崩溃。无论是升级还是全新安装(删除应用 + 数据并重新下载),但在 IO7 上不会这样做。

我已联系 Apple 寻求帮助以解决此问题,因为我发送给他们的二进制文件在我的 IO8 设备和我的其他 IOS8 测试人员(通过 Testflight 以及 IOS7)上运行良好。提交的二进制文件应该可以正常启动,但不会。

一些研究:

This post citing a similar problem 于今天格林威治标准时间凌晨 1:34 创建,然后被删除。感谢 Google 缓存。 Back in June of 2012 Marco Arment discovered that Apple was messing with his submitted binaries,导致它们“立即崩溃”。不是超级有用,但有趣的是这可能是一个问题。

有谁知道还有什么可能导致此问题,或者甚至如何调试该问题?我很困惑,因为它如何在 Testflight 等上完美运行。

【问题讨论】:

我刚刚下架了我的应用程序(昨晚已批准并标记为准备销售),因为它在启动时也会崩溃。不知道从哪里开始调试它。 你们有任何堆栈跟踪吗?那应该是第一个看的地方。您可以根据提交的二进制文件对它们进行符号化并追踪它崩溃的位置。 我的应用程序在有机会向 Apple 报告任何内容之前就在商店中崩溃了,所以我没有什么可反对的。 我认为这可能是代码签名身份问题。它让我想起了我在尝试添加已配置的 testflight 用户时看到的那种崩溃,但代码签名是错误的……不过我最近确实改变了这一点。但这意味着 Apple 甚至懒得测试分发二进制文件,我认为这是审查过程的一部分。 提交了一个新的二进制文件,希望这个能正常工作吗?现在我等待,我的用户抱怨。 【参考方案1】:

这是 App Store 代码签名过程中的一个错误,现已修复。受影响的应用程序已修复其代码签名,并将作为更新推出。

【讨论】:

以上是关于为啥我的更新后的应用程序在仅适用于 IOS8 的启动时崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

带有视图的 UIView 过渡和设置框架不再适用于 iOS 8

适用于 iOS 的 RESTKit 和 IPV6

如何使用 iPad 访问我的照片库和摄像机

Swift 和 TestFlight 适用于 iOS 8 但不适用于 iOS 7

为啥我的 websocket 请求只有在用 OOP 编写时才“未经授权”,而在仅使用函数编写时同样可以完美运行?

UICollectionReusableView 中的自动布局不适用于 iOS7 但适用于 iOS8