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 were able to work around this by just swapping in an Assets.car file that was created using XCode 7 instead of 8 - upload succeeded..


I was mistaken actually - we actually set the deployment target of the message extension to 8 and built that way - then saved the Assets.car, built the app with the message extension's deployment target set to 10, and swapped the Assets.car files..

How can I do that with a iMessage application catalog?

We didn't change anything except the main app's catalog.


(See correction above)

I know a few people here said they were able to submit after they made changes to some of their image assets, but I can't figure out if any of my images have the wrong bit depth or whatever the issue may be...


I went ahead and submitted the app with a deployment target of 9.0

According to Apple's support page, 88% of devices are curring using iOS 9: https://developer.apple.com/support/app-store/

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.

THANK YOU, this worked like a charm! The offending assets had:


"DisplayGamut" : "P3",

"Encoding" : "ARGB-16",

Thanks 3ZS, this is finally a solution that works! In my case, the culprit were some PDF image assets I exported from Affinity Designer. AD seems to default to the P3 color profile when exporting PDF. I changed it to sRGB and it works fine now. I really wish Xcode would show the color space of PDFs in the Asset properties, not just "Unknown"!


Btw, the extra step of creating the IPA file is not actually needed. You can simply use "Show in Finder" in the Xcode archive browser and navigate to Product > Application > YourApp > Assets.car.

Hello,


I followed all the steps and the Assets.json file doesn't contain any reference to P3 or ARGB-16 but I still get the "ERROR ITMS-90682" error.

All entries basically look like this:

{

"Compression" : "lzvn",

"BitsPerSample" : 8,

"LayoutDirection" : "0 - Horizontal",

"AssetType" : "Image",

"ColorModel" : "RGB",

"Name" : "w_m_d_Shop_03",

"PixelWidth" : 960,

"Graphics" : "GLES2,0",

"Subtype" : 0,

"PixelHeight" : 960,

"SizeClass Horizontal" : "universal",

"EdgeInsets" : "top:0 left:0 bottom:0 right:0",

"Scale" : 3,

"Memory" : "512MB",

"Opaque" : false,

"DisplayGamut" : "sRGB",

"Idiom" : "universal",

"Encoding" : "ARGB",

"Image Type" : "kCoreThemeOnePartScale",

"SizeClass Vertical" : "universal"

}

Any more ideas what I should look for?

Exact same thing for me. I only have one assets.car in my project and it returned no P3 or 16bit that I could see. Still getting upload error.


{

"Compression" : "lzfse",

"BitsPerSample" : 8,

"LayoutDirection" : "0 - Horizontal",

"AssetType" : "Image",

"ColorModel" : "RGB",

"Name" : "Messages Icon",

"PixelWidth" : 1024,

"Graphics" : "GLES2,0",

"Subtype" : 0,

"PixelHeight" : 768,

"SizeClass Horizontal" : "universal",

"EdgeInsets" : "top:0 left:0 bottom:0 right:0",

"Scale" : 1,

"Memory" : "512MB",

"Opaque" : true,

"DisplayGamut" : "sRGB",

"Idiom" : "marketing",

"Encoding" : "ARGB",

"Image Type" : "kCoreThemeOnePartScale",

"SizeClass Vertical" : "universal"

}

OK I spoke too soon - the upload still failed. Running assetutil on the new Assets.car now doesn't show any more references to P3 or ARGB-16. Not sure what's the problem now 😟

Thanks 3ZS for the tip on how to dump Assets.car. I did so and in my case every BitsPerSample is 8 and every DisplayGamut is sRGB. P3, case insensitive, does not appear in the json output. The error was flagged in Assets.car in my watchOS 3 app. I'm still pretty much convinced that the error was trying to tell me that I cannot ship a watch app whose minimum deployment target is watchOS 3 if the minimum deployment for my iOS app is iOS 8. That's just conjecture on my part but I believe watchOS 3 apps only work with iOS 9 and iOS 1O. If I say my watchOS app only supports watchOS 3, then my I'm not allowed to deploy on iOS 8. I don't believe that's necessarily the meaning for everyone but I believe that's the meaning of the error in my case.

Could people that are still experiencing this please file a bug report and attach a copy of your Xcode archive so we can investigate this further? Post your bug numbers here.

That sounded reasonable, so we gave it a try but still received the same error.


Our Assets.car only contains that single 1024x768 iMessage App icon. Using the assetutil tool doesn't show P3 or 16-bit. Interestingly when extracting the image back out and inspecting it (Photoshop/XnViewMP) the colour profile (sRGB) has been removed.

@pdm


Is that a copy of the Xcode archive of the sticker extension project or the main project you're looking for?

After some testing I have found the real culprit:


"Compression" : "lzfse"


If you see that in any Assets.car file you will get this error.


lzfse compression is only available on iOS 9 and above, but it seems like ITC gives the 16-bit/P3 error instead. Seems like the asset compiler tool uses lzfse for the sticker 1024x768 icon.

Here is a workaround:
  1. Set your sticker pack (or whatever plugin is causing the issue) Deployment Target to iOS 8
  2. Build sticker pack.
  3. Copy out the Assets.car from the built sticker pack to somewhere
  4. Set sticker pack Deployment Target back to iOS 10
  5. Archive
  6. Copy Assets.car from step 3 into the Archive
  7. Success