How to build and submit a Universal App for distribution on the App Store with the iOS 4 SDK

Today I’ve been working on submitting an update to our popular Catholic Prayers database app: it’ll be our first Universal application to hit the App Store. Ever since we upgraded to the latest SDK we can only build for iOS 4, but we’ve set the iPhone OS Deployment Target to be 3.1.3. That way, our users should be able to run the app on devices running iPhone OS 3.x.

Xcode includes project templates for iPad apps and has a menu command (Project > Upgrade Current Target for iPad) that helps you get the project setup correctly when you want to add iPad support to your existing iPhone project. The Upgrade command gives you two options…

  • Upgrade your existing iPhone app to a universal application that runs on both iPhone and iPad. Customers buy Universal apps once and can install it on iPad, iPhone and iPod Touch devices. Learn more reading Apple’s documentation.
  • Create a separate iPad target based on your existing iPhone target. Both targets will use much of the same codebase but in the end, you compile two separate apps. Customers who want to use both the iPhone and iPad-optimized apps have to buy both of them. Learn more reading Apple’s documentation.
  • The new Build > Build and Archive command builds your app, creates an .ipa file (the zip archive of your app bundle you need to create to submit your app to iTunes Connect) and then archives the app bundle in a subfolder of ~/Library/MobileDevice/Archived Applications. These archives also appear in the new Archived Applications view in the Organizer.

    The great thing is that the new Organized feature simplifies the painful interaction with iTunes Connect: the Organizer allows to setup your app for Ad Hoc distribution and to upload the final version to iTunes Connect.

    On top of that, the “Validate Application” button will, in Apple’s words, “run all of the validation tests that will be run upon submission to the App Store so that you can fix any problems before submitting your app.”

    The “Submit Application” button will upload the binary to iTunes Connect. Before you do this, you must have set up the application with all its metadata (screenshots, 512×512 icon, keywords) in iTunes Connect (this also true for the Validate Application step).

    Make sure that all your keywords are correct because you cannot change them afterwards unless you reject the binary.

    These new features are a time saver and are very handy, however there’s no progress indication in the Organizer window, and nothing is shown in the Activity window as well, so it will look just like Xcode is hanging. Have faith though, it’s really working :)