ITMS-90682: can't contain 16-bit or P3 assets if the app supports iOS 8 or earlier

Hi, I just started seeing this error (without change in assets) in a testflight submission (we have iOS10-only code) - this is the full message (from XCode8)


"ERROR ITMS-906832: "Invalid Bundle. The aseet catalog at 'Paylod/XXXX/Assets.car' can't contain 16-but or P3 assets if the app supports iOS 8 or earlier"


I can submit by disabling iOS8 but need to know if this is a temporary error, or something wrong in our assets.


Thank you

Accepted Reply

How to resolve "ERROR ITMS-90682: Invalid Bundle - The asset catalog at 'Payload/XXXXX/Assets.car' can't contain 16-bit or P3 assets if the app supports iOS 8 or earlier."

With Xcode 8 GM, this error will occur if you include 16-bit or P3 assets in an app submission targeting iOS releases earlier then iOS 9.3. If your app requires wide color functionality you must change your Deployment Target to iOS 9.3 or later. If your app does not require wide color functionality and you wish to deploy it to older iOS versions then you should replace all 16-bit or P3 assets with 8-bit sRGB assets.


You can find 16-bit or P3 assets by running “assetutil” on the asset catalog named in the error message from iTunes Connect. The following steps outline the process:

1. Create an Inspectable .ipa file. In the Xcode Organizer (Xcode->Window->Organizer), select an archive to inspect, click “Export...", and choose "Export for Enterprise or Ad-Hoc Deployment". This will create a local copy of the .ipa file for your app.

2. Locate that .ipa file and change its the extension to .zip.

3. Expand the .zip file. This will produce a Payload folder containing your .app bundle.

4. Open a terminal and change the working directory to the top level of your .app bundle

cd path/to/Payload/your.app


5. Use the find tool to locate Assets.car files in your .app bundle as shown below:

find . -name 'Assets.car'


6. Use the assetutil tool to find any 16-bit or P3 assets, in each Assets.car your application has as shown below. :

sudo xcrun --sdk iphoneos assetutil --info /path/to/a/Assets.car > /tmp/Assets.json


7. Examine the resulting /tmp/Assets.json and look for any contents containing “DisplayGamut": “P3” and its associated “Name". This will be the name of your imageset containing one or more 16-bit or P3 assets.


8. Replace those assets with 8-bit / sRGB assets, then rebuild your app.


Update: If your Deployment Target is set to either 8.3 or 8.4 and you have an asset catalog then you will receive this same error message, even if you do not actually have 16-bit or P3 assets. In this case you will either need to lower your Deployment Target to 8.2, or move it up to 9.x.

Replies

The same problems here. Ticker number 28318690. Please help!

@Hmmka: In your bug you indicate that your Development Target is 8.3. Currently that won't work. You need to either go back to 8.2 or forward to 9.x.

I've updated the correct answer at the top of this thread to include this point about submitting with asset catalogs using a Deployment Target of either 8.3 or 8.4.

Thanks! It works!

> sudo xcrun --sdk iphoneos assetutil --info Assets.car > ~/Desktop/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.

[1] 59418 abort sudo xcrun --sdk iphoneos assetutil --info Assets.car > ~/Desktop/Assets.json


😟

Unfortunately, this is insufficient. None of the assets reported by assetutil are 16-bit or P3. All are compressed "lzvn", ColorModel "RGB", DisplayGamut "sRGB", Encoding "ARGB". I've tried uploading twice, but I always get the error.

Is this a bug in the Xcode GM seed, then?

Please file bugs with your .ipa attache so we can take a look and understand what's going on. A lot of what your describing sounds like the issues with having a deployment target set to 8.3 or 8.4. Is that the case?

It didn't work with macOS Sierra GM.

I tried with another computer with El Capitan and it worked.

I'm having the same issue. The only thing that changed in this update is I added a Sticker extension. All resources on the main app are the same images as before. Looking at the Assets.car, I do detect P3 images, but these images are old and have always shipped with the app without issue. Was this incompatiablility issue simply not enforced in previous versions of Xcode?

Having the same problem, tried to compile the app using deployment target iOS 8.0, 8.1, 8.2 and, unfortunately, it didn't help. Switching to 9.3 did help, but we'd like to continue supporting old iOS version for now.

I also followed the instructions to check that no images are 16-bit or P3 and didn't find any.

Sent a radar 28360065.

Same problem for us on macOS Sierra and no P3 images.


It only worked switching to 9.3.. Very frustrating.. Every year new problems..

I just bumped my deployment target up...it's not worth potentially an hour or two to try to make this work, for my free app. If I was a conspirary theorist (I'm not) I'd say this would be a good way for Apple to get developers to stop supporting older versions of iOS.

Hi!

I have the same problem when I try to submit the app with deployment target iOS 8.0, 8.1, 8.2.

I've created the json but that contains only images sRGB and are 8-bits.


Works submitting with 9.3 but we need to support older versions.


Here my bug report: 28480581

This script helped me a lot!

just run it inside your Asset catalog. My Deployment target is 8.2 and App was successfully uploaded to AppStore after this script

#!/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