Xcode 8 发布 App 崩溃?

Posted

技术标签:

【中文标题】Xcode 8 发布 App 崩溃?【英文标题】:Xcode 8 releasing App Crash? 【发布时间】:2017-01-25 21:38:11 【问题描述】:

将构建上传到 App Store 时出现错误:

“无效的捆绑包。如果应用的目标是早于 ios 9.3 的 iOS 版本,则 '$path' 的资产目录不能包含 16 位或 P3 资产”

之前我上传到Beta测试就好了,我的部署目标是8.3。

【问题讨论】:

【参考方案1】:

这个答案正是你的问题的解决方案

https://***.com/a/39453818/1271424

您需要找到所有 P3 资源,然后将它们转换为 sRGB 颜色空间(使用任何图像编辑器)。这是原始答案:

使用 Xcode 8 GM,如果您包含 16 位或 P3,则会出现此错误 应用程序提交中针对 iOS 版本早于 iOS 的资产 9.3。如果您的应用需要广色域功能,您必须将您的部署目标更改为 iOS 9.3 或更高版本。如果您的应用没有 需要广泛的颜色功能,并且您希望将其部署到较旧的 iOS 版本,那么您应该将所有 16 位或 P3 资产替换为 8 位 sRGB 资源。您可以通过运行找到 16 位或 P3 资产 错误消息中命名的资产目录上的“assetutil”来自 iTunes 连接。以下步骤概述了该过程:

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

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

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

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

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

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

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

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

更新:如果您的部署目标设置为 8.3 或 8.4,并且您有 资产目录,那么您将收到同样的错误消息,即使您没有 实际上有 16 位或 P3 资产。在这种情况下,您要么需要降低 您的部署目标到 8.2,或将其移至 9.x。

【讨论】:

以上是关于Xcode 8 发布 App 崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode10发布App Store,iOS9崩溃

导出或提交到 App Store 时 Xcode 崩溃

Xcode7.3工具解析App崩溃日志(.crash文件)

保存屏幕截图时 Xcode 8.2 模拟器崩溃

Xcode 8 beta LLDB 不断崩溃

Xcode 8 添加布局边距崩溃