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

Answered by in 177216022

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.

didn't work for me either.


is this only a xcode 8 GM problem or are we doing something wrong?


cheers

emre

We had the same issuue.


Here's how we managed to submit.


1. With the help of XNViewMP we identified the PNGs different from PNG-8 and PNG-32 (we had PNG-24 and PNG-16)
2. Removed them to be sure they were the cause of the error
3. Convert them to PNG-32



Works like a charm now.

Sounds like it hates having a 24-bit PNG (8-bits per channel RGB) as the 1024x768 iMessage App Icon. Try making it a 32-bit PNG (RGBA 8-bits per channel).

Ran into this issue, saw that all our images did not contain 16-bit or P3 images. However we saw that one image had a differnet color space then what XCode supprots (it was something like DELL U124) . That was causing our issue. So make sure you check that out as well.

could you detail how did you achieve that?


I'm still trying to build my app with iMessage extension support, and I always get this error



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

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/

Accepted Answer

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

Would love to but bugreport.apple.com is down.

Thanks Kumobiuslvan. I found my issue to be the same as yours after changing the command line tool to xcode 8 in preference. It did not appear to be the "compression" issue at first because I was using Xcode 7's command line.


My IM app doesn't allow me to compile if I set it to iOS8. Lots of error so doesn't work for me 😟

You could find the "Asset Compile" command line Xcode runs when building, copy to the Terminal and change the min is to 8.0.

ticket number

28237404

Setting as what u said But still upload error. I've submitted a bug report just now And the bug ID is 28238488. Thanks so much!

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