从应用商店下载的应用程序在 9.3 低版本设备中崩溃

App downloaded from appstore crash in 9.3 lower version Devices

当我在AppStore发布我的应用程序时,一些用户反馈说我们的应用程序打开时崩溃了,这种情况只发生在iOS 9.2.x台设备上。

我已经在我的测试设备上调试了应用程序。但在调试模式下,崩溃不再发生,我从 App Store 下载应用程序,崩溃再次发生。更奇怪的是,Fabric 无法捕获任何崩溃报告。

我该怎么做才能找到崩溃的原因并解决这个问题。有没有人有类似情况?

已解决!

我没注意到我用最新的Xcode编译上传了这个版本--Xcode8.2.1,我换成老的IDE后,我发现一切都好起来了。而且我发现了一些有用的文档 there and some developers had also counted the similar question, this is their discussion.

所以解决这个问题的最终方法是 DELETE the P3 color space and 16 bit图片。

步骤:

  1. 创建可检查的 .ipa 文件。在Xcode Organizer (Xcode->Window->Organizer)中,select一个要检查的存档,点击“导出...”,然后选择"Export for Enterprise or Ad-Hoc Deployment"。这将为您的应用程序创建 .ipa 文件的本地副本。

  2. 找到该 .ipa 文件并将其扩展名更改为 .zip。

  3. 展开 .zip 文件。这将生成一个包含您的 .app 包的 Payload 文件夹。

  4. 打开终端并将工作目录更改为 .app 包的顶层 cd path/to/Payload/your.app

  5. 使用查找工具在您的 .app 包中找到 Assets.car 文件,如下所示: 寻找 。 -名称 'Assets.car'

  6. 使用 assetutil 工具查找任何 16 位或 P3 资产,在每个 Assets.car 您的应用程序中,如下所示。 : sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json

  7. 检查结果 /tmp/Assets.json 并查找包含“DisplayGamut”:“P3”及其关联的“名称”的任何内容。这将是包含一个或多个 16 位或 P3 资源的图像集的名称。

  8. 将这些资源替换为 8 位/sRGB 资源,然后重新构建您的应用。