首次使用Xcode上传App至App Store遇ITMS-90709错误求助
Hey there, let's tackle this frustrating tvOS app icon error you're facing. ITMS-90709 is specifically tied to tvOS's layered app icon requirement for the "App Icon - Small" asset—so even if you've tried resizing images, you might be missing a key step in how tvOS expects these icons to be structured. Here are the most likely mistakes and how to fix them:
Common Missteps That Cause This Error
- Confusing iOS and tvOS icon structures: Unlike iOS, tvOS app icons (especially the small variant) use a two-layer system: a foreground image and a solid background image. You probably tried uploading a single combined icon instead of splitting it into these two separate layers, or forgot to add the 2x version of the background layer.
- Incorrect Asset Catalog setup: Your
Assets.xcassetsmight not be using the proper tvOS icon template. If you just created a generic app icon set instead of the tvOS-specific "App Icon - Small" template, it won't have the required foreground/background sub-groups. - Wrong image properties: Even if the size is right, tvOS requires the background layer to be a non-transparent PNG. If your background image has an alpha channel (transparency), or is off by even 1 pixel in dimensions, it'll trigger this error.
- Xcode cache or project conflicts: Old cached assets or conflicting Info.plist settings can override your new icon setup, making Xcode ignore the correct background layer you added.
Step-by-Step Fixes
1. Verify Your Asset Catalog Structure
Open your Assets.xcassets and locate the "App Icon - Small" set. Expand it—you should see two sub-groups: Foreground and Background, each with slots for 1x and 2x images. If this structure is missing:
- Right-click in the Assets catalog > Select
New App Icon - Choose the
tvOS > App Icon - Smalltemplate (not the generic app icon) - This will create the proper layered structure automatically.
2. Re-Create and Assign the Background Layer 2x Image
- The tvOS "App Icon - Small" background layer 2x needs to be 152x152 pixels, saved as a non-transparent PNG (no alpha channel). Use an image editor to export it without transparency (in Preview, go to
File > Exportand uncheck "Alpha"). - Drag this image directly into the
Background > 2xslot in your Asset Catalog—don't drag it into the main "App Icon - Small" group (that'll overwrite the layered structure). - Double-check that the
Foreground > 2xslot also has the correct 152x152 image (this one can have transparency).
3. Clean Up Your Info.plist
- Open your
Info.plistfile and look for keys likeCFBundleIconsorCFBundleIcons~tvOS. - If you see manual entries pointing to individual icon files (not your Asset Catalog set), delete those keys. tvOS relies on the Asset Catalog to pull layered icons, so manual file paths will conflict.
- Ensure the
CFBundleIconNamekey points to your Asset Catalog's app icon set name (e.g.,AppIcon).
4. Clear Xcode Caches and Rebuild
- Go to
Product > Clean Build Folder(hold the Option key while clicking Clean to see this option) to purge build artifacts. - Delete your Derived Data: Open Xcode >
Preferences > Locations> Click the arrow next to the Derived Data path to open the folder, then delete the entire folder for your project. - Rebuild your project, create a new Archive, and try uploading again.
5. Double-Check the Sample Project Icons
If you used icons from a sample project, open that project's Assets.xcassets and look at how their "App Icon - Small" is structured. Chances are the sample uses separate foreground and background images—you need to copy those two images into the corresponding slots in your project, not just copy a single combined icon.
If All Else Fails
Create a brand new, empty tvOS project, add the correct layered "App Icon - Small" using the steps above, and try archiving/uploading it. If this works, the issue is likely a hidden conflict in your original project (like outdated build settings or third-party library interference). You can then compare the new project's configuration to yours to spot the difference.
内容的提问来源于stack exchange,提问作者kittencornball

