tvOS Upload Error ITMS-90471 Missing Images

When attempting a routine* update to my tvOS app, I'm getting blocked by uploading from both Xcode and Application Loader with three errors:


iTunes Store Operation Failed

ERROR ITMS-90471: "Missing Image Asset. Your app is missing the Home Screen Icon asset in 'Payload/Lightbow.app'."

ERROR ITMS-90471: "Missing Image Asset. Your app is missing the App Store Icon asset in 'Payload/Lightbow.app'."

ERROR ITMS-90471: "Missing Image Asset. Your app is missing the Top Shelf Image Wide asset in 'Payload/Lightbow.app'."


These assets exist, same as they ever did, in an asset catalog that was set up by Xcode. I deleted my asset catalog, manually re-added all my assets to a freshly created asset catalog with freshly-created "Brand Assets" folder inside with the templates usually there for tvOS, Cleaned, Nuked "Derived Data" folder, restarted Xcode, built a fresh archive and tried to upload to the App Store. Same result.


Anybody else run into this or have a fix? I'm on Xcode 9.1 (9B55) and I believe the last successful tvOS update for me was built/submitted using Xcode 9.0.


I'm getting mixed messages between Apple's posts on the forums / release notes / web documentation on whether a 10.2+ tvOS app requires a non-wide version of the top shelf image, so I can understand shenanigans there, but no clue why my Home Screen / App Store Icon assets aren't registering.


/ com.apple.actool.catalog-contents */

filename: Media.xcassets

children:

filename: Brand Assets.brandassets

children:

filename: App Icon - App Store.imagestack

slot:

idiom: tv

role: primary-app-icon

size: 1280x768

children:

filename: Front.imagestacklayer

children:

filename: Content.imageset

children:

filename: front.png

idiom: tv

image:

height: 768

width: 1280

filename: Middle.imagestacklayer

children:

filename: Content.imageset

children:

filename: middle.png

idiom: tv

image:

height: 768

width: 1280

filename: Back.imagestacklayer

children:

filename: Content.imageset

children:

filename: back.png

idiom: tv

image:

height: 768

width: 1280

filename: Gradient.imagestacklayer

children:

filename: Content.imageset

children:

filename: gradient.png

idiom: tv

image:

height: 768

width: 1280

filename: App Icon.imagestack

slot:

idiom: tv

role: primary-app-icon

size: 400x240

children:

filename: Front.imagestacklayer

children:

filename: Content.imageset

children:

filename: front.png

idiom: tv

scale: 1x

image:

height: 240

width: 400

filename: front@2x.png

idiom: tv

scale: 2x

image:

height: 480

width: 800

filename: Middle.imagestacklayer

children:

filename: Content.imageset

children:

filename: middle.png

idiom: tv

scale: 1x

image:

height: 240

width: 400

filename: middle@2x.png

idiom: tv

scale: 2x

image:

height: 480

width: 800

filename: Back.imagestacklayer

children:

filename: Content.imageset

children:

filename: back.png

idiom: tv

scale: 1x

image:

height: 240

width: 400

filename: back@2x.png

idiom: tv

scale: 2x

image:

height: 480

width: 800

filename: Gradient.imagestacklayer

children:

filename: Content.imageset

children:

filename: gradient.png

idiom: tv

scale: 1x

image:

height: 240

width: 400

filename: gradient@2x.png

idiom: tv

scale: 2x

image:

height: 480

width: 800

filename: Top Shelf Image Wide.imageset

slot:

idiom: tv

role: top-shelf-image-wide

size: 2320x720

children:

filename: topShelfWide.png

idiom: tv

scale: 1x

image:

height: 720

width: 2320

filename: topShelfWide@2x.png

idiom: tv

scale: 2x

image:

height: 1440

width: 4640

filename: Top Shelf Image.imageset

slot:

idiom: tv

role: top-shelf-image

size: 1920x720

filename: LaunchImage.launchimage

children:

filename: launch@2x.png

idiom: tv

scale: 2x

orientation: landscape

extent: full-screen

minimum-system-version: 11.0

image:

height: 2160

width: 3840

filename: launch.png

idiom: tv

scale: 1x

orientation: landscape

extent: full-screen

minimum-system-version: 9.0

image:

height: 1080

width: 1920


-Peter



* Nothing is routine about an app update. This happens all the time, though the errors/circumstances differ, and I often waste a day rebuilding / deleting / zapping until things happen to work.

Answered by lightbow in 278603022

Oh, I'm so both upset and relieved right now.


TL;DR

The state of Xcode / Application Loader's underlying submission tool was corrupted. All I had to do* was delete the .itmstransporter folder in my home directory and try again. I no longer get cryptic validation errors when hitting "Validate" in Xcode, and I no longer get false "missing images" when submitting the app archive.


*other than wasting valuable days of developement time searching for answers, trying every combo, and filing radars for the various failure cases *sigh*

Background

The real clue in all of this was the top of the log file, which showed something like this:

An error occurred while starting bundles for the software update process.  Transporter will try to continue.  Unresolved constraint in bundle com.apple.transporter.asperasupport [7]: Unable to resolve 7.0: missing requirement [7.0] package; (&(package=com.apple.transporter.transport.service)(version>=1.9.6)(version<=1.9.6)) [caused by: Unable to resolve 10.0: missing requirement [10.0] package; (&(package=org.springframework.util.backoff)(version>=4.1.0)(!(version>=5.0.0)))]
An error occurred while starting bundles for the software update process.  Transporter will try to continue.  Unresolved constraint in bundle com.apple.transporter.commlink [9]: Unable to resolve 9.0: missing requirement [9.0] package; (&(package=com.apple.transporter.foundation)(version>=1.9.6)(version<=1.9.6)) [caused by: Unable to resolve 10.0: missing requirement [10.0] package; (&(package=org.springframework.util.backoff)(version>=4.1.0)(!(version>=5.0.0)))]
An error occurred while starting bundles for the software update process.  Transporter will try to continue.  Unresolved constraint in bundle com.apple.transporter.itmstransporter [10]: Unable to resolve 10.0: missing requirement [10.0] package; (&(package=org.springframework.util.backoff)(version>=4.1.0)(!(version>=5.0.0)))
An error occurred while starting bundles for the software update process.  Transporter will try to continue.  Unresolved constraint in bundle com.apple.transporter.softwaresupport [15]: Unable to resolve 15.0: missing requirement [15.0] package; (&(package=com.apple.transporter.log)(version>=1.9.6)(version<=1.9.6)) [caused by: Unable to resolve 10.0: missing requirement [10.0] package; (&(package=org.springframework.util.backoff)(version>=4.1.0)(!(version>=5.0.0)))]
An error occurred while starting bundles for the software update process.  Transporter will try to continue.  Unresolved constraint in bundle com.apple.transporter.updater [17]: Unable to resolve 17.0: missing requirement [17.0] package; (&(package=com.apple.transporter.log)(version>=1.9.6)(version<=1.9.6)) [caused by: Unable to resolve 10.0: missing requirement [10.0] package; (&(package=org.springframework.util.backoff)(version>=4.1.0)(!(version>=5.0.0)))]
[2017-11-16 14:12:59 EST] <main>  INFO: Transporter is searching for updated software components.
[2017-11-16 14:12:59 EST] <main>  INFO: No updates found.
[2017-11-16 14:12:59 EST] <main>  INFO: MD5 checksum calculation in the transporter will be skipped.

I didn't know anything about "Transporter" but it sounded fishy, so I looked around and it turns out other people were having issues with it as well. StackOverflow tells me all the files are stored in a folder in my home directory, and nuking it (along with a clean build with a cleared-out DerivedData folder) restored order to the universe. If you encounter this issue, you may want to test first by moving aside that folder:

mv .itmstransporter/ .old_itmstransporter/

...and then filing a bug for Apple to see the corrupted version and maybe one day detect issues like this on the tool-side.


Happy Thanksgiving everyone.

Note that I've tried this with the following portion removed, submitted as-is, or populated with properly-sized assets (though from my understanding I don't think I need them when deploying for 10.2 or later), and it still produces the same error.


filename: Top Shelf Image.imageset

slot:

idiom: tv

role: top-shelf-image

size: 1920x720


This also wouldn't explain why all the other images are failing to be recognized. I also tried renaming the folder inside the asset catalog to "App Icon & Top Shelf Image" which is what it's called on a freshly-created project. I've also verified that the build settings in my TV target are pointing at the proper names. Doesn't matter whether they contain spaces or not. Same failures.


It might also be interesting that when I hit "Validate..." from the organizer, it refuses with the error "Unable to process application at this time due to the following error: Invalid Provisioning Profile. This provisioning profile is not compatible with iOS apps." even though it states "Profile: tvOS Team Store Provisioning Profile" when I'm clicking through the steps on either Validate or Upload to App Store.

I tried this with both Xcode 9.1 and Xcode 9.0.1 (both fail) and even cracked open the Payload's Assets.car file. All the expected images are indeed present, so I'm thinking this might be a server-side thing? Filed a bug report. (Still interested in hearing workarounds, if anybody has 'em) I'm trying to determine why this might affect my app but (hopefully?!) not a widespread issue.

Going back to the missing/not missing image, what is it's status in 'copy bundle resources', or is it even broken out from the asset catalog....?

Accepted Answer

Oh, I'm so both upset and relieved right now.


TL;DR

The state of Xcode / Application Loader's underlying submission tool was corrupted. All I had to do* was delete the .itmstransporter folder in my home directory and try again. I no longer get cryptic validation errors when hitting "Validate" in Xcode, and I no longer get false "missing images" when submitting the app archive.


*other than wasting valuable days of developement time searching for answers, trying every combo, and filing radars for the various failure cases *sigh*

Background

The real clue in all of this was the top of the log file, which showed something like this:

An error occurred while starting bundles for the software update process.  Transporter will try to continue.  Unresolved constraint in bundle com.apple.transporter.asperasupport [7]: Unable to resolve 7.0: missing requirement [7.0] package; (&(package=com.apple.transporter.transport.service)(version>=1.9.6)(version<=1.9.6)) [caused by: Unable to resolve 10.0: missing requirement [10.0] package; (&(package=org.springframework.util.backoff)(version>=4.1.0)(!(version>=5.0.0)))]
An error occurred while starting bundles for the software update process.  Transporter will try to continue.  Unresolved constraint in bundle com.apple.transporter.commlink [9]: Unable to resolve 9.0: missing requirement [9.0] package; (&(package=com.apple.transporter.foundation)(version>=1.9.6)(version<=1.9.6)) [caused by: Unable to resolve 10.0: missing requirement [10.0] package; (&(package=org.springframework.util.backoff)(version>=4.1.0)(!(version>=5.0.0)))]
An error occurred while starting bundles for the software update process.  Transporter will try to continue.  Unresolved constraint in bundle com.apple.transporter.itmstransporter [10]: Unable to resolve 10.0: missing requirement [10.0] package; (&(package=org.springframework.util.backoff)(version>=4.1.0)(!(version>=5.0.0)))
An error occurred while starting bundles for the software update process.  Transporter will try to continue.  Unresolved constraint in bundle com.apple.transporter.softwaresupport [15]: Unable to resolve 15.0: missing requirement [15.0] package; (&(package=com.apple.transporter.log)(version>=1.9.6)(version<=1.9.6)) [caused by: Unable to resolve 10.0: missing requirement [10.0] package; (&(package=org.springframework.util.backoff)(version>=4.1.0)(!(version>=5.0.0)))]
An error occurred while starting bundles for the software update process.  Transporter will try to continue.  Unresolved constraint in bundle com.apple.transporter.updater [17]: Unable to resolve 17.0: missing requirement [17.0] package; (&(package=com.apple.transporter.log)(version>=1.9.6)(version<=1.9.6)) [caused by: Unable to resolve 10.0: missing requirement [10.0] package; (&(package=org.springframework.util.backoff)(version>=4.1.0)(!(version>=5.0.0)))]
[2017-11-16 14:12:59 EST] <main>  INFO: Transporter is searching for updated software components.
[2017-11-16 14:12:59 EST] <main>  INFO: No updates found.
[2017-11-16 14:12:59 EST] <main>  INFO: MD5 checksum calculation in the transporter will be skipped.

I didn't know anything about "Transporter" but it sounded fishy, so I looked around and it turns out other people were having issues with it as well. StackOverflow tells me all the files are stored in a folder in my home directory, and nuking it (along with a clean build with a cleared-out DerivedData folder) restored order to the universe. If you encounter this issue, you may want to test first by moving aside that folder:

mv .itmstransporter/ .old_itmstransporter/

...and then filing a bug for Apple to see the corrupted version and maybe one day detect issues like this on the tool-side.


Happy Thanksgiving everyone.

If anyone else is having a variation of this problem, and the .itmstransporter bug doesn't fix it:
I had this exact same error: "Missing Image Asset. Your app is missing the Home Screen Icon asset in", but without it missing the whole set.
What worked for me was removing, and deleting all of my images, and re-creating them from scratch within photoshop.
::shrug::

tvOS Upload Error ITMS-90471 Missing Images
 
 
Q