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

We are having the same issue. A few days ago, we released our app with Xcode 7.3. Yesterday, I migrated to Swift 3 and today I was trying to upload a beta to TestFlight but I'm having this error. Every target in our app points to iOS 9. I've tried the proposed solution and none of my assets are 16-bit or P3. What should we do?


EDIT:


The script above me fixed the error! We were able to ship the app after using the script!

Thank you for this. Your updated comment about the Deployment Target was the answer for me. I had mine set to 8.4 and couldn't submit or even run the app in the 8.4 simulator. Changed the target to 8.2 and it works like a charm.


Rohan.

Hi 3ZS.


Using the release Xcode 8.0, I've run a validation on our IPA that needs to target iOS 8.1, because I only have 1 device that has iOS 8 on it and it's iOS 8.1.3.


Validation fails reporting the following:


iTunes Store operation failed.

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


There are no 16 bit assets in our project and I have no idea what a P3 asset might be.


I just went through every image file in our iOS app, and every asset lib as well.


Any ideas here?

Have you followed the instructions in the Correct Answer at the very beginning of this thread?

After following your instructions, I still have the same issue. I noticed that some of my images have the color space listed as "Adobe RGB (1998)"; could this possibly be the issue? I have a lot of images, so I haven't gone through and looked at all of them.

I created a case for you to look at: 28739590

We have followed the instructions and yet the appstore upload is still failing with:


iTunes Store operation failed.

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


We are setting the target to 8.2 and all are images are s-RGB format. Any help would be greatly appreciated.

Please file a bug report, attach a copy of the .ipa you are trying to submit, and post the bug number here. We're looking at bseay's case and will look at yours once we have the bug.

Bug Report: 28757844


Thanks Apple!!

Actually in your case you do have a P3 asset in your Assets.car file. The image "Add_to_Passbook_Badge_2014" shows up with the DisplayGamut property showing "P3" when running assetutil tool on your Assets.car file. If you can get that image updated to use sRGB then that'll work better for you.


As an aside, as of iOS 9 we now have the PKAddPassButton class that you should probably be using instead of your own button. It will display the correct Add to Wallet badge, localized, and with the appropriate appearance.

Great, that solved the problem. Thanks!!

Thank you for that useful information... actually I used the Preview app to change the color profile (in Preview app, go to Tools -> Assign profile...) from "Adobe RGB (1998)" to "sRGB IEC61966-2.1" and rebuilt the project.

I don't think I every replied to @bseay. Your .ipa file has P3 assets in it, so the error message is correct. You should follow the directions at the beginning of this (long) thread and remove all the P3 assets by converting them to sRGB.