it seems that when Apple released iOS 4.2 and Xcode 3.2.5 they introduced a bug to the App Store integration within Xcode. The problem happens after you “Build and Archive” and then use the “Validate…” button in the Xcode organizer prior to submitting to the App Store.
If you have an application with a bundle display name (CFBundleDisplayName) that happens to contain a space you will get a validation error as follows:
The application "*My App Name*" has failed validation because of the following issues.
The detailed description for the “issue” is as follows:
My App Name.ipa: filename may not contain whitespace
What is odd about this problem is that if you look at the actual application file that has been archived (right-click on the archived application in the Xcode organizer and use Show in Finder) it is still named using the application product name not the display name. However, even if the product name does not contain a space, you still get the validation failure.
The best workaround I can find until Apple fixes Xcode is to use the standalone Application Loader application that is bundled with Xcode. You will find this in
/Developer/Applications/Utilities, I currently have v1.4 installed with Xcode 3.2.5. The first time you run Application Loader you need to enter your iTunes Connect login information. After that the procedure is as follows:
- Build and Archive the app as usual with Xcode.
- Find the archived application in Xcode organiser, select it and then use the Share button, ensure you have the correct iPhone Distribution code-signing identity selected and then use Save to Disk… to generate an ipa file.
- Run Application Loader and select File -> New (command-N) and choose the application that you want to submit. This assumes that you have already added the new version to iTunes Connect.
- You then get asked to confirm if you have tested and qualified this binary on iOS 4, to which you probably should respond “Yes”…
- You can now use the Choose… button to select the application binary “ipa” file you previously saved and then click Send to upload to the App Store.
Application Loader does not seem to suffer from the same bug as the app submission code in Xcode so, at least for now, it is a good workaround if you have a space in your applications display name.