上传到iTunesConnect时是否有人遇到此错误。上传进程获取“使用iTunes商店验证资产”,我收到以下错误:
我正在使用xCode8,在现有iOS应用程序中嵌入自定义贴纸应用程序。我暂时删除了贴纸资产,并包含苹果样本消息图标,以测试是否是导致问题的贴纸资产,但是在验证时我收到相同的错误。有什么想法吗?
答案 0 :(得分:36)
简而言之: 您的捆绑包中的图片具有不受支持的格式。 您可以调整这些图像的格式,也可以增加目标的最低iOS版本。请记住,后者只是一个修补程序,可能不是您想要做的,因为它会因为一个非常可解决的问题而减少您的潜在用户群。
第1部分将解释如何找出哪些图片是有问题的图片。
第2部分向您展示如何调整图片格式,以便iTunesConnect对此感到满意。如果您只有少量图像,则可以跳到第2部分并手动检查它们。
第1部分:识别有问题的图像:
Apple开发者论坛有一个主题: https://forums.developer.apple.com/thread/60919
接受的解决方案如下:
如何解决"错误ITMS-90682:无效的捆绑包 - 资产目录位于' Payload / XXXXX / Assets.car'如果应用支持iOS 8或更早版本,则无法包含16位或P3资源。"
使用Xcode 8 GM,如果您在针对iOS 9.3之前的iOS版本的应用提交中包含16位或P3资源,则会出现此错误。如果您的应用需要广泛的颜色功能,则必须将部署目标更改为iOS 9.3或更高版本。如果您的应用程序不需要广泛的颜色功能,并且您希望将其部署到较旧的iOS版本,那么您应该用8位sRGB资产替换所有16位或P3资产。
您可以通过在iTunes Connect的错误消息中指定的资产目录上运行“assetutil”来查找16位或P3资产。以下步骤概述了该过程: 1.创建Inspectable .ipa文件。在Xcode Organizer(Xcode-> Window-> Organizer)中,选择要检查的存档,单击“导出..."”,然后选择“#34;导出企业版或Ad-Hoc部署" 。这将为您的应用创建.ipa文件的本地副本。 2.找到.ipa文件并将其扩展名更改为.zip。 3.展开.zip文件。这将生成一个包含.app包的Payload文件夹。 4.打开终端并将工作目录更改为.app包的顶级 cd path / to / Payload / your.app
使用find工具在.app包中找到Assets.car文件,如下所示: 找 。 -name' Assets.car'
使用assetutil工具在您的应用程序具有的每个Assets.car中查找任何16位或P3资产,如下所示。 : sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car> /tmp/Assets.json
检查生成的/tmp/Assets.json并查找包含“DisplayGamut":”P3“及其相关”名称"的任何内容。这将是包含一个或多个16位或P3资产的图像集的名称。
- 醇>
用8位/ sRGB资产替换这些资产,然后重建您的应用。
第2部分:调整图像的颜色配置文件以便与iTunesConnect配合使用
打开"信息"有问题的文件(CMD + I)。 检查你的颜色配置文件。
我不知道哪些配置文件完全正常,哪些不是,但我的" Adobe RGB(1998)"肯定被拒绝了。 所以我使用了" Color Synch Utility" (附带OSX)。 (右键单击图像,打开...)
现在替换您之前的图像,然后重试。 这对我有用,我希望这能帮到你。
答案 1 :(得分: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
答案 2 :(得分:8)
受 Ignacio 的启发,我已经能够使用以下脚本将所有 AdobeRGB1998 图像转换为 sRGB 图像
安装imagemagick
brew update
brew install imagemagick --with-little-cms --with-little-cms2
查找图片并将其转换为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" \
"{}" \;
如果你的Mac上没有 AdobeRGB1988.icc
考虑在此下载AdobeRGB1998 https://www.adobe.com/support/downloads/iccprofiles/iccprofiles_mac.html https://www.adobe.com/digitalimag/adobergb.html
答案 3 :(得分:4)
尝试部署目标iOS 8.2为我工作。 按照Apple "您需要将目标操作系统移回8.2。这里有多个问题在起作用。您正在看到的是,使用8.3或8.4的部署目标生成的Assets.car错误地包含了一个启动iTC验证的密钥。这与父应用中可能存在或可能不存在的扩展无关(存在单独的问题)。
话虽如此,随着iOS 10即将上线,我们的建议是将您的部署目标移至9.x。"
答案 4 :(得分:1)
我使用@fancy步骤找到了有问题的图像,但我无法使用上述解决方案更改图像的颜色配置文件。
我尝试使用ColorSync,预览,但我无法更改有问题的图像的颜色配置文件。
最后,我可以使用convert命令更改颜色配置文件。
convert my_image.png -profile /path/to/AdobeRGB1998.icc -profile /path/to/sRGB_v4_ICC_preference_displayclass.icc my_image.png
此后,在Finder>上显示了相应的颜色配置文件(sRGB ...)。文件>获取信息,最后我可以使用Application Loader上传我的应用程序。
如果您想尝试这种方法:
1)使用brew下载ImageMagick:
brew update
brew install imagemagick --with-little-cms --with-little-cms2
2)下载颜色配置文件:
3)执行以下命令:
convert input_image_name.ext -profile /path/to/AdobeRGB1998.icc -profile /path/to/sRGB_v4_ICC_preference_displayclass.icc output_image_name.ext
答案 5 :(得分:1)
因为,需要将其更改为8位sRGB
答案 6 :(得分:1)
一旦您将图像识别为他/她的回复中所解释的图像,您就可以使用预览应用更改颜色配置文件(在预览应用中,转到工具 - >指定配置文件...),从“Adobe RGB( 1998年“(或者您的个人资料图像)到”sRGB IEC61966-2.1“......然后您只需要在项目中导入修改后的图像并重建它。
答案 7 :(得分:1)
使用这些命令安装imagemagick
1) Change the extension of .ipa to .zip.
2) Expand the .zip file. This will produce a Payload folder containing your .app bundle.
3) Open a terminal and change the working directory to the top level of your .app bundle cd path/to/Payload/your.app
4) find . -name "*.png" -print0 | xargs -0 identify | grep "16-bit" | awk '{print $1;}' | xargs mogrify -depth 8
this command will show you corrupted images. Replace these images with 8 depth images.
现在,使用以下步骤检查项目中使用的16个深度资产:
<input type="text" ng-model="$ctrl.numberInput" ng-pattern="/^\d+$/" required />
答案 8 :(得分:0)
如果您需要临时解决问题,只需将其最低开发目标提高到iOS 9.0即可解决此问题。
答案 9 :(得分:0)
能够使用ff步骤解决:
答案 10 :(得分:0)
收集文件夹中所有Png的副本
对于Ex。命名文件夹图像并将其放在桌面
然后转到终端并将目录更改为您已移动照片的文件夹
cd desktop / image
运行此
sips -g all * .png&gt; print.txt
您将找到一个名为Print.txt的文件在文件夹中创建(内部图像)
打开并搜索
bitsPerSample:
如果您发现它旁边的数字不同于8那么您就会得到错误的图像
在预览应用程序中打开此图像(或图像)然后将其导出为相同的格式并确保选择8位颜色深度(注意如果您选择多个图像,您不会看到颜色深度选择但它还在工作)
复制并替换旧图像的新图像。
此外作为我之前发布的内容的附加物
此步骤适用于所有照片 在预览应用程序中打开每个或所有照片 点击工具&gt;调整大小&gt;然后将dpi设置为72 和工具&gt;分配个人资料&gt;然后选择Generic RGB Profile
多数人
答案 11 :(得分:0)
此外作为我之前发布的内容的附加物
此步骤适用于所有照片
在预览应用程序中打开每个或所有照片
点击工具&gt;调整大小&gt;然后将dpi设置为72
和工具&gt;分配个人资料&gt;然后选择Generic RGB Profile
答案 12 :(得分:0)
通过终端修复一个命令:
find . -type f -name '*.png' -print0 | while IFS= read -r -d '' file; do sips --matchTo '/System/Library/ColorSync/Profiles/sRGB Profile.icc' "$file" --out "$file"; done
答案 13 :(得分:0)
我的答案很简单,找到16位彩色图像并将其转换为8位深度彩色图像。如果不是16位,则不会进行转换,因为sips -m ...
不是幂等,这意味着转换后的图像在同一图像文件上再次执行时将再次被修改。
# before run the commands, cd to the folder which includes all suspicious images.
while IFS= read -d '' -r file; do if [ $(file "$file" | grep -c '16-bit') -eq 1 ]; then sips -m '/System/Library/Colorsync/Profiles/sRGB Profile.icc' "$file"; fi done < <(find . -print0)
更清楚地讲,将其保存为bash shell文件,如下所示,
#/bin/bash
# Before run the shell script,
# cd to the folder which includes all suspicious images
while IFS= read -d '' -r file; do
if [ $(file "$file" | grep -c '16-bit') -eq 1 ]; then
sips -m '/System/Library/Colorsync/Profiles/sRGB Profile.icc' "$file";
fi
done < <(find . -print0)