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 :)



Where Technology and Religion Collide
iPod Touch 4th Generation, iPad revision and new mysterious iDevice coming in autumn
How to install QuickTime Player 7 on Mac OS X 10.6 Snow Leopard without the DVD
Copy of an NSObject subclass
Android iPad knockoffs… pass
One more thing… The new SDK wants a “new” Entitlements.plist file that will include some additional mumo jumbo, so if you get an error like this:
“Invalid application-identifier Entitlement – This error can occur if the bundle identifier (that is, the value assigned to the CFBundleIdentifier key in Info.plist) does not match the pattern allowed by the provisioning profile you obtained from the iPhone Developer Portal. Make sure you have signed your app with the correct profile, and make sure you do a clean build (“Clean All” in Xcode) in order to regenerate the entitlements that are signed into your bundle.”
Be sure to REMOVE your Entitlements file and create a new one through Xcode so that it’ll add the new necessary magic to it.
Thank you, Mauro! I spent hours fighting the CFBundleIdentifier problem when trying to update my app to iOS 4. I finally thought to Google the whole error message and found your post. A fresh Entitlements.plist got it to work, thank you!