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

I've found that removing all images from my xcassets (apart from the required icons) allows me to submit the app, adding any png back in to the xcassets causes the error to occur.

A plain white 64x64 png created in Photoshop at 8-bit / channel, RGB still causes the issue.

Is there anything else we can try?

Are you all guys having this problem only when building iMessage packs and ios 9 widgets? I have this issue with a target that builds for iOS 8.4 and up and I don't have any P3 or 16-bit assets in it. I had to revert my project to Xcode 7 and build from the stable version in order to be able to submit my binary.

We aren't building an iMessage pack, just trying to release our app through XCode 8 - upgraded code to Swift 2.3

Thanks for all the bug reports everybody, they've been helpful. We've updated the import validation and you should no longer see this issue. If you continue to have trouble submitting you apps, please update your bug reports with details of what you're seeing now and attach the .ipa file you're trying to submit.

Still seeing the same error at the moment, my ipa is already in my bug report:

28259575

Thanks aaron.amer. Could you try something? It looks like your Deployment Target is set to 8.4. Could you back that up and set it to 8.2 and see if that fixes your case?

This has fixed it for us, we have successful validation.

We are building for iOS7 in the main app by the way. Thanks!

Hi,

Yes, that seems to have done the trick, thanks!

Why would that have caused the issue?

I still get the same error. I've no iMessage packs or other fancy stuff, just a plain Objective-C app with no new assets I'm trying to upload with Xcode 8 and which targets iOS 8.4. I checked every PNG and followed everying written in this thread, but I found no problems with my assets.


Stefan

You'll need to move the target OS back to 8.2. There have been multiple issues at play here. The one you're seeing is that Assets.car generated with a Deployment Target of 8.3 or 8.4 incorrectly include a key that trips up the iTC validation. This is unrelated to extensions that may or may not exist in the parent app (where there was a separate problem).


Having said that, with iOS 10 going live soon, our recommendation will be to move your Deployment Target to 9.x.

Thank you very much! Switching to 8.2 fixed the problem!


Stefan

This issue hasn't been resolved for me, and I'm trying to upload an app with deployment target iOS10 and WatchOS 3.0, which should allow these assets. rdar://28285183

Thanks joostvanderborg, we're investigating.

I still get the error, but it says "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 that iOS 9.3.'

http://i.imgur.com/VzvQq7Y.png