ERROR ITMS-90682: "Invalid Bundle. The asset catalog at 'Payload/****.app/Assets.car' can't contain 16-bit or P3 assets if the app is targeting iOS releases earlier than iOS 9.3."
最近项目不是太紧,安装了Xcode8, 打包测试的时候突然报了这个错误,大致意思就是图片资源里面包含了16bit或者display P3 颜色的图片,Google了一下,唯一有这个错误的地方就是
ITMS-90682: can't contain 16-bit or P3 assets i...
根据上面的方法执行步骤如下:
1.导出项目的 ipa 文件
2.定位到该ipa文件使用解压工具解压 ,或者修改后缀名.ipa 为 .zip后直接解压
3. 解压后会有Payload 文件夹,里面会有你的APP文件
4. 打开终端切换到你的app的Payload文件夹下的 .app bundle 文件夹内,形式如下:(终端输入cd 拖入Payload里面的文件,回车)
cd path/to/Payload/your.app
5. 用 find 命令定位到 Assets.car 文件 .app bundle , 形式如下:
find . -name 'Assets.car'
6. 使用 assetutil 命令找到任何包含着 16-bit or P3 的资源文件, 对每个 Assets.car 执行以下命令 :
sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json
/path/to/a/Assets.car 替换为Assets.car文件的路径, 如果你终端的位置依然在bundle下则直接执行
xcrun --sdk iphoneos assetutil --info ./Assets.car >/tmp/Assets.json
7. 打开Assets.json
open /tmp/Assets.json
8. 开始查找"DisplayGamut" : "P3" 没找到可以试试 P3, BitsPerSample,然后记下图片的名称。
9. 修改图片颜色描述文件
在你的项目中找到图片, 显示在finder中,使用预览打开,然后指派描述文件为sRGB 保存关闭
所有的图片都改完了再次打包上传,久违的绿✅回来啦
最后补充一点:
如果执行
xcrun --sdk iphoneos assetutil --info ./Assets.car >/tmp/Assets.json
出现错误
Assertion failed: (tokenCount < maxCountIncludingZeroTerminator - 1), function CUIRenditionKeySetValueForAttribute, file /BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreUI_host/CoreUI-374.1.1/CoreTheme/ThemeStorage/CUIThemeRendition_Support.m, line 228.
那么你一定是和我一样,安装了多个版本的Xcode, 而且你的command line tools设置为了xc7,
打开xcode设置, 修改command line tools 版本为xcode8 重新运行即可。
/****************09.29 更新****************/
感谢 @doveLark 的回复:
1.当提示版本无效的时候苹果会发送邮件到开发者账号的邮箱,邮件提示在info.plist文件里面需要添加的字段和值;
2.general->deployment info -> deployment target 我这里改为9.3
第二条,如果不适配iOS8的话,自然改一下就是最方便的 “解决方法”