如果应用程序支持iOS 8或更早版本,Assets.car不能包含16位或P3资产?

Jam*_*ton 35 upload assets itunesconnect testflight xcode8

上传到iTunesConnect时是否有人遇到此错误.上传进程获取"使用iTunes商店验证资产"我得到以下错误:

在此输入图像描述

我正在使用xCode8,在现有iOS应用程序中嵌入自定义贴纸应用程序.我暂时删除了贴纸资产,并包含苹果样本消息图标,以测试是否是导致问题的贴纸资产,但是在验证时我收到相同的错误.有什么想法吗?

fan*_*ncy 36

简而言之: 您的捆绑包中的图片具有不受支持的格式.您可以调整这些图像的格式,也可以增加目标的最低iOS版本.请记住,后者只是一个修补程序,可能不是您想要做的,因为它会因为一个非常可解决的问题而减少您的潜在用户群.

第1部分将解释如何找出哪些图片是有问题的图片.

第2部分介绍如何调整图片格式,以便iTunesConnect对此感到满意.如果您只有少量图像,则可以跳到第2部分并手动检查它们.

第1部分:识别有问题的图像:

Apple开发者论坛有一个主题:https: //forums.developer.apple.com/thread/60919

接受的解决方案如下:

如何解决"ERROR ITMS-90682:无效的捆绑包 - 如果应用程序支持iOS 8或更早版本,则'Payload/XXXXX/Assets.car'的资产目录不能包含16位或P3资产."

使用Xcode 8 GM,如果您在针对iOS版本早于iOS 9.3的应用提交中包含16位或P3资源,则会出现此错误.如果您的应用需要广泛的颜色功能,则必须将部署目标更改为iOS 9.3或更高版本.如果您的应用程序不需要广泛的颜色功能,并且您希望将其部署到较旧的iOS版本,那么您应该用8位sRGB资产替换所有16位或P3资产.

您可以通过在iTunes Connect的错误消息中指定的资产目录上运行"assetutil"来查找16位或P3资产.以下步骤概述了该过程:1.创建Inspectable .ipa文件.在Xcode Organizer(Xcode-> Window-> Organizer)中,选择要检查的存档,单击"Export ...",然后选择"Export for Enterprise或Ad-Hoc Deployment".这将创建一个本地副本.应用程序的ipa文件.2.找到.ipa文件并将其扩展名更改为.zip.3.展开.zip文件.这将生成一个包含.app包的Payload文件夹.4.打开终端并更改工作目录到.app包的最高级别cd path/to/Payload/your.app

  1. 使用find工具在.app包中找到Assets.car文件,如下所示:find.-name'Assets.car'

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

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

  4. 用8位/ sRGB资产替换这些资产,然后重建您的应用程序.

第2部分:调整图像的颜色配置文件,以便与iTunesConnect配合使用

打开违规文件(CMD + I)的"信息".检查颜色配置文件.

未接受的颜色配置文件

我不知道哪些配置文件完全正常,哪些不是,但我的"Adobe RGB(1998)"肯定被拒绝了.所以我使用了"Color Synch Utility"(OSX附带).(右键单击图像,打开...)

现在在底部,您可以分配不同的颜色配置文件: 使用Color Synch Utility分配不同的颜色配置文件

现在,如果再次检查图像,它应该如下所示: 转换后的颜色配置文件

现在替换以前的图像,然后重试.这对我有用,我希望这会对你有所帮助.

  • Adobe RGB 1998问题为我做了,谢谢. (2认同)

小智 25

感谢@fancy的回答我明白这个问题出现在图像属性"space"中,其值为RGB 16bit.它需要更改为8位sRGB.我必须支持iOS7客户端,所以我不能只将部署目标更改为9.3.

所以我做了什么:1)我使用简单的脚本(见下文)递归查找所有*.png图像并更改属性.2)然后我重建了.ipa文件.Application Loader没有显示任何错误.

#!/bin/sh

files=`find . -name "*.png"`

for i in ${files[@]}; do
    SOURCE_FILE=${i}
    DESTINATION_FILE=$SOURCE_FILE
    sips \
    --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' \
    "$SOURCE_FILE" \
    --out "$DESTINATION_FILE"
done

exit 0
Run Code Online (Sandbox Code Playgroud)


Jib*_*eex 8

Ignacio的启发,我已经能够使用以下脚本将所有AdobeRGB1998图像转换为sRGB图像

安装imagemagick

brew update
brew install imagemagick --with-little-cms --with-little-cms2
Run Code Online (Sandbox Code Playgroud)

查找图像并将其转换为sRGB配置文件

cd path>to>Images.xcassets>folder
find . -name '*.png' -exec convert "{}" \
-profile    "/System/Library/ColorSync/Profiles/AdobeRGB1998.icc" \
-profile "/System/Library/ColorSync/Profiles/sRGB Profile.icc" \
"{}"  \;
Run Code Online (Sandbox Code Playgroud)

如果您的Mac上没有AdobeRGB1988.icc

考虑在此处下载AdobeRGB1998 https://www.adobe.com/support/downloads/iccprofiles/iccprofiles_mac.html https://www.adobe.com/digitalimag/adobergb.html


小智 0

如果您需要临时解决该问题,只需将其最低开发目标提高到 iOS 9.0,该问题就会得到解决。