Xcode8打包ERROR 90682:"can't contain 16-bit or P3 assets if the app is targeting iOS releases earlier

升级Xcode8之后,重新打包给我报错,错误如下:

ERROR ITMS-90682: "Invalid Bundle. The asset catalog at 'Payload/XX.app/Assets.car' can't contain 16-bit or P3 assets if the app is targeting iOS releases earlier than iOS 9.3."

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,然后记下图片的名称。

    
目前的解决办法由两种:

方法一(单个处理问题图片):

下面我们使用ColorSync实用工具将这个描述文件修改下


指派它的描述文件为sRGB IEC61966-2.1,保存。


再次编译运行我们的APP,发现问题解决了!

方法二(暴力处理所有图片):

这里我们使用bash script直接处理所有图片为正确格式,这样我们就不用去定位是哪个图片的问题了,或许更方便一些。

#!/bin/bash
DIRECTORY=$1
echo "------------------------------"
echo "Passed Resources with xcassets folder argument is <$DIRECTORY>"
echo "------------------------------"
echo "Processing asset:"
XSAASSETSD="$(find "$DIRECTORY" -name '*.xcassets')"
for xcasset in $XSAASSETSD
do
    echo "---$xcasset"
    IMAGESETS="$(find "$xcasset" -name '*.imageset')"
    for imageset in $IMAGESETS
    do
        echo "------$imageset"
        FILES="$(find "$imageset" -name '*.png')"
        for file in $FILES 
        do
            echo "---------$file"
            sips -m "/System/Library/Colorsync/Profiles/sRGB Profile.icc" $file --out $file
        done
    done
done
echo "------------------------------"
echo "script successfully finished"
echo "------------------------------"
第二种暴力方法确实没使用过,第一种方法虽然笨拙但确实受用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值