My recent App Store upload gave me this error:
iTunes Store operation failed.
Missing required icon file. The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format for iOS versions >= 7.0.
I've added a 120 pixel icon file with the names "Icon-120.png" and "Icon-60#2x.png" and checked it's being added in the Build Phases > Copy Bundle Resources but I am still getting the same error.
Any suggestion what else I can try to solve this?
If it helps I've been working my way through this very lengthy SO answer: 'Missing recommended icon file - The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format'
but yet to get to the bottom of this.
Also, I've done a Build > Clean and restarted Xcode.
====
$ file Icon-120.png
Icon-120.png: PNG image data, 120 x 120, 8-bit/color RGBA, non-interlaced
$ file Icon-60\#2x.png
Icon-60#2x.png: PNG image data, 120 x 120, 8-bit/color RGBA, non-interlaced
For Xcode 9 on High Sierra try this:
Go to Menu Product > Archive, right click on your new build > Show in Finder.
Open Terminal and change to Archive: (type cd + space, drag your new build *.xcarchive
cd /Users/[user]/Library/Developer/Xcode/Archives/[XXX].xcarchive
Using #stubyte's code:
find Products/ -name Info.plist -print0 | xargs -0n1 plutil -replace BuildMachineOSBuild -string 16A323
Go back to Xcode > Windows > Organizer > Upload to App Store...
Fixed:
ERROR ITMS-90022: "Missing required icon file. The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format for iOS versions >= 10.0."
ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '167x167' pixels, in .png format for iOS versions supporting iPad Pro."
ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '152x152' pixels, in .png format for iOS versions >= 10.0."
Still warning
WARNING ITMS-90704: "Missing Marketing Icon. iOS Apps must include a 1024x1024px Marketing Icon in PNG format. Apps that do not include the Marketing Icon cannot be submitted for App Review or Beta App Review."
This temporary solution is working for me.
If you use xcode 9, maybe try this.
Find xcarchive file, execute this command.
find Products/ -name Info.plist -print0 | xargs -0n1 plutil -replace BuildMachineOSBuild -string 16A323
Visit developer site stubyte`s answer.
In the "General" view,
inside the "App Icons and Launch Images" section,
make sure that "Apps Icons Source" is linked with the "Images.xcassets" file.
Since you mentioned the icon filename is not in the Info.plist you'll want to add:
<key>CFBundleIconFiles</key>
<array>
<string>Icon-120.png</string>
</array>
It appears to be required now in order to associate the icon(s) with your app.
In my case, for some reason the AppIcon asset was not part of the app target. Checking this checkbox solved the problem:
Another Simple Fix once discovered:
I had a similar issue with XCode 9.0, a project that worked perfectly well under XCode 8 and iOS 10 suddenly loses it's icons (only on iPads) when I upgraded the solution.
Tore my hair out, did the sRGB thing, did the Transparency thing.
Turns out I still had the following empty entry in my targets info.plist file
CFBundleIcons~ipad
I'd long ago moved to specifying this in the target build settings.
The solution was to simply remove this entry from the info.plist file (clicked the helpful little "-" button. Rebuilt and tested and everything was perfect once more.
If you are using an images.xcassets file, be sure it is included in the Build Phases > Copy Bundle Resources list. I inherited a project that did not use this, migrated to use this file for App Icon, but did not add it to the Copy Bundle Resources list. Now, you would expect a better error message, but this fixed the problem. (So did editing the plist file as per Sahil above citing stubyte.)
I also faced the same problem, I created an app icon by this URL:
https://appicon.co/
for iPhone and iPad. It gives me a .zip file, I unzip it and move "AppIcon.appiconset" in my application's xcassets.
Now clean the project and create a new archive and upload it to the AppStore and it worked,
Thanks
Just had same problem. Using Xcode 8.3.3 and wanted to use AppIcon in Assests catalogue. Tried all sorts of Stack Overflow answers without success.
Finally learned about a deep clean step from Ken/Apple Forum:
removed all icon files, whether from resources (delete - trash) or appicon file (select - remove selected items); removed even assets folder
deep cleaned (Use the Product menu w/option key pressed, then choose to 'clean build folder')
added a new asset catalogue and called it "Assets" right clicked in Assets folder and added new app icon set - changed that one in inspector to be for iOS >=7
triple
checked all my icon files OUTSIDE of Xcode (all were already png files of right resolution, but some had still colour profile attached from photoshop elements or did have indexed colour instead of RGB profile. so I made sure I only save a png file without colour profile and from a background layer) - not sure that was necessary
archived the build from Product menu
validated and uploaded the build from Window - Organizer
If you have added all icons files to the "images.xcassets", it could be possible that you have forgotten check the "Target Membership" in the right panel of Xcode.
You will can to clean your project, archive it and send it to iTunesConnect.
I was able to resolve the issue by copying the below-given code in PodFile.
post_install do |installer|
copy_pods_resources_path = "Pods/Target Support Files/Pods-PROJECT_NAME/Pods-PROJECT_NAME-resources.sh"
string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"'
assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"'
text = File.read(copy_pods_resources_path)
new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments)
File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents }
end
Let me know, if this works for you.
If you're like me:
Uninterested in hacks
Brand new to XCODE, just trying to get your React Native or Wrapper app to build and upload
Running Xcode 9
Didn't declare icons locally properly
You may have made my mistake and you're not actually having the problems that others here are having. You just need to put the icons in the project!
My simple solution:
Create a 80x80 icon named Icon-40#2x.png
Create a 120x120 icon named Icon-60#2x.png
Create a 1024x1024 icon named Icon.png
Open XCODE
Navigate to Images.xcassets, which presents you with several places to drag icons to
Drag Icon-40#2x.png to Iphone Spotlight iOS 7, 40pt, x2 box
Drag Icon-60#2x.png to Iphone App iOS 7, 60pt, x2 box
Drag Icon.png to App Store 1024pt
Re-archive and retry upload... success!
In my case, I've created new icons for the application using this site.
This error happens because there is no icon of the size indicated in the error.
In my case it was icons of different sizes that did not exist.
https://appicon.co/#app-icon
We had an old legacy project from 2015 and Xcode 6. It was using an old cocoapods integration. None of the other proposed solutions worked so far. After banging my head for a couple of hours I found the solution.
We just needed to update cocoapods and rerun pod install. In fact I deintegrated cocoapods and integrated it from scretch, but maybe a pod install would've been sufficient.
after wasting my almost 1 day and trying every possible solution available on the internet, but nothing worked.
Finally, I got the actual problem and the way to solve. Here we go.
The actual problem is that your image assets (Images.xcassets) are not linked with your target project. Now solution,
Go to the Build Phases of your project.
Add Copy Bundle Resources from the add icon on top if not already added.
Then inside that add Images.xcassets.
That's it.. you are done. Now, it should work fine.
How I got the solution? Just compared the configurations of a newly created project with my current project. And voila.
Make sure plist MinimumOSVersion > 6.0
TLDR: beware of special characters in your app's display name a.k.a. "Product Name".
My project is new (created fresh in Xcode 9 a month ago) and we had correctly-sized assets for all the image groups (app icon, settings, etc.) dragged into the xcassets file. I was getting these errors about missing icons of exact sizes when uploading to App Store Connect API, both with fastlane as well as within Xcode. This was the first time uploading this particular app.
I wasted a few very frustrating hours on this issue, and tried various things to no avail, that are mentioned online:
cleaning all build folders
recreating the xcassets file, making sure it is in the correct build phase
naming the files the "old way" (e.g., Icon-60#2x.png etc.) before dragging into the AppIcon inside the xcassets
verifying the project points at the right xcassets file for App Icon
I could go on...
In the end, on a hunch, I tried to rename the app (that is, the "Product Name" in Xcode project's settings, which is shown on the user's home screen under the app icon) because ours contained a tilde ~ (our app is a retro themed game called SOMETH~1.app). Removing the tilde fixed my issue. I became suspicious because the output files from the build are literally called what you put into the "Product Name" field, and so I could imagine that on the server side the path with tilde is being handled incorrectly. It never gave trouble in iOS Simulator or my device, but there you go! FWIW I did submit a bug report, but have yet to hear back from Apple.
Thought I'd post my experience in case somebody else out there runs into the same problem.
My app keeps getting rejected as an invalid binary after uploading it to iTunesConnect via ApplicationLoader. The e-mail notification I'm getting is:
Your binary is not optimized for iPhone 5 - - New iPhone apps and app updates submitted must support the 4-inch display on iPhone 5 and must include a launch image with the -568h size modifier immediately following the portion of the launch image's filename. Launch images must be PNG files and located at the top-level of your bundle, or provided within each .lproj folder if you localize your launch images. Learn more about iPhone 5 support and app launch images by reviewing the 'iOS Human Interface Guidelines' at /.../
Which is weird as I'm packing all splash screens in the binary, checked that through extracting my .ipa aswell and they are there (in their respective .lproj-s), correctly named and of correct sizes. I do not use the Asset Catalog, as I haven't found a way to localize that (yet).
What could be the issue for the rejection?
I also face the same problem in my case myapp plist file contains key "Launch Image" after remove the key from plist issue fixed on validation.
The issue here seemed to be that it was expected that the splashes would be in EVERY localization folder, even if I didn't localize the splash for that particular language. INCLUDING Base.lproj. After copying the english splashes into default, the app got through the initial check and is awaiting review as we speak.
We faced the same issue and couldn't solve it after trying many solutions, we believe it's a kind of bug in App submission.
But we found a workaround which can keep launch images localized and pass the submission verification.
Environment:
Xcode 6.1 (6A1052c) with iOS 8.1 SDK
Precondition:
Have following properties in your "*-info.plist" file.
Steps:
Go to your target's settings and in our standard scenario (localize
launch images, which uses "UILaunchImages" in "*-info.plist" but not
image assets), it should look like the image
Change the setting to use image assets (Note: after this step, Xcode will automatically REMOVE the "UILaunchImages" properties in your *-info.plist file. So please BACKUP the properties first.)
Go to the "LaunchImage" assets (can click the arrow button on the right) and fill with images from one of your *.lproj folder.
Now, go to the "LaunchImage" folder which contains images and "Contents.json" file.
Remove ALL the launch IMAGES just added, but kepp the "Contents.json" file.
Check the "Contents.json", it should contains properties like image below
Double check following items:
*-info.plist contains "UILaunchImages" properties
Project setting uses image asset for launch images
"Contents.json" in "LaunchImage" asset folder and the folder DOES NOT really have launch images
Now you can have a try for localized launch images and submit the binary to iTunes Connect. In our App, the workaround did work for "localized launch images" and "submission successful".
It should be a trick for avoiding the bug in submission checking.
Since the workaround above doesn't change any resource, except making the checking thinks we use image assets, we are more convinced that there are some bugs in Apple's checking.
Cheers!
I had the same problem. You don't need launch images if running in ios 8. I made a new launch screen as a storyboard and deleted the xib version. Change the settings in Targets -> General -> Launch Screen file to reflect the new file. And make sure Targets -> Info -> UILaunchStoryboardName is updated as well.
Must I make icons for iPad if it's an iPhone only app? Apple says, that it's not required. When I try to send my game using Application Loader, I see this.
Can I just delete CFBundleIconFiles(iPad) from info.plist ?
You do not need iPad icon files if your app is an iPhone-only one. Those errors can occur sometimes if the project isn't cleaned or if the resource files aren't copied into the project properly.
Make sure you've marked the app for iPhone only, and remove the iPad icon files from your info.plist, and also make sure all the files are copied in your copy bundle sources. To check this, go to
Your project target > Build Phases > Copy Bundle Sources
and clean your project pressing cmd ⌘+alt ⌥+Shift ⇧+K.
If that didn't work, delete the images from your project, drag and drop them again, and repeat the steps above.
I keep receiving the following message from Apple when submitting my app for approval:
"iPhone 5 Optimization Requirement - Your binary is not optimized for iPhone 5. New iPhone apps and app updates submitted targeting iOS 6 and above must support the 4-inch display on iPhone 5 and must include a launch image with the -568h size modifier immediately following the portion of the launch image's filename. Launch images must be PNG files and located at the top-level of your bundle, or provided within each .lproj folder if you localize your launch images."
I'm using AIR SDK 3.9 (and I checked to make sure by tracing NativeApplication.nativeApplication.runtimeVersion).
I have a Default-568h#2x.png image in the src folder, and I checked the Project/Properties/ActionScript Build Settings/Package content (I'm using Flash Builder 4.6). It is definitely checked off to be included in the build. In "Export Release Build", I don't see it in the Package Contents there, but I don't see any of the other Default png's either, so I don't think that's the problem.
Does anyone know what I'm doing wrong?
Be sure that the launch images also located in the folder "bin-release-temp"... I have to put them manually into that folder...
The launch images cannot be referenced anywhere in the project. You cannot embed them. You cannot use them. If you do, they are not packaged as launch images, but as images used at runtime. I was having the same problem when I was referencing the images as a SplashScreenImage source. It's an unfortunate way for it to be handled, basically requiring you to include the same image twice, but it is what it is.
This link might help. It describes what and where to keep default images in air application for iPhone deployment.
http://rohitdhore1612.wordpress.com/2013/05/22/air-invalid-binary-iphone-5-optimization-requirement-your-binary-is-not-optimized-for-iphone-5/
I couldn't find any results in google, so i hope someone has a solution for my problem:
I changed the name, App icon, "splashscreen image" of an existing app in xcode and all of them are shown correctly on the ipad simulator 4.3
If I start the app on my ipad iOS 4.3.5 the App icon is changed but the text under the App icon and the splashscreen is the old one. How is this possible?
There aren't any images of the old splashscreen in the project folder.
I deleted the old App from the iPad. Restarted the iPad several times with no luck.
Delete that app from your device. (long hold of icon and then hit the X)
Connect to Xcode
Clean
The build and run on your device.
The resources on the device are probably lingering and not being replaced when you rebuild it.
This link gives detailed information about launch images
http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BuildTimeConfiguration/BuildTimeConfiguration.html%23//apple_ref/doc/uid/TP40007072-CH7-SW11
For your situation you'll need is a file called Default-Landscape~ipad.png in your bundle if your app universal.
Was your app iPhone/iPod specific before?
To change the name of your app, try adding a key to your Info.plist called CFBundleDisplayName~iPad with the name you want. I'm not certain this will work mind.
Normally, images that work fine in the simulator but not on the device are caused by capitalization problems. The simulator won't be case sensitive, but the device will be. Check the filename against how you refer to it in code (and/or the standard names that you need to use, e.g. "Default.png" with an uppercase D) and make sure both match.
A Clean and rebuild might also help.