views:

1334

answers:

3

Apple is now requiring app developers to submit apps that target 2.2.1 but also build for 3.0. I (and I imagine a large majority of small/part-time developers) only have one iPhone and since the upgrade to 3.0 is irreversible, I wanted to get some thoughts out there as to what are some best practices for minimizing risk during the transition.

I understand there is no foolproof way of doing full regression testing on both OSes, but any thoughts on how one might minimize regressions would be helpful.

Here's Apple's exact text:

Millions of iPhone and iPod touch customers will move to iPhone OS 3.0 this summer. Beginning today, all submissions to the App Store will be reviewed on the latest beta of iPhone OS 3.0. If your app submission is not compatible with iPhone OS 3.0, it will not be approved.

Existing apps in the App Store should already run on iPhone OS 3.0 without modification, but you should test your existing apps with iPhone OS 3.0 to ensure there are no compatibility issues. After iPhone OS 3.0 becomes available to customers, any app that is incompatible with iPhone OS 3.0 may be removed from the App Store.

A: 

What is your concern about upgrading your phone from 2.2.1 to 3.0? The latest revision seems more or less solid.

Alex Reynolds
The concern is that if I upgrade to 3.0, I won't have a device to test on 2.2.1. The simulator is decent, but it's not perfect.
Martin Gordon
+1  A: 

You really can't test on a device against both 2.21 and 3.0 unless you have two devices. If that's really important, you can think about an iPod Touch (assuming your app doesn't require an iPhone).

As far as the simulator, once you install the 3.0 sdk you won't be able to build targeting 2.2.1 any longer. The old 2.2.1 build target gets replaced by a 3.0 target. To support both, you should think about building a virtual machine that retains the 2.2.1 sdk.

However, I agree with Alex... not much need to think about supporting both platforms. 3.0 is solid, and it's clear from today's Apple mail that it's now the major focus, as far as testing & compatibility.

Edit 5/17/09: One thing I learned after this post is that on the Mac, you can't virtualize the Leopard client OS. Apple only allows you to run the server version of OS X in a virtual machine. IMHO, this really limits software developers as a group, among others, and I hope this is changed eventually.

ChrisW
You can install two SDKs on one machine as long as you put them in two separate directories.
Stephen Darlington
Well, the concern is that I might need to put out an update before 3.0 ships that is compatible with 3.0 but still works on 2.2.1 and Apple doesn't really give me a good way of doing so.
Martin Gordon
You can indeed still build for 2.2.1 from a 3.0 beta SDK - although it's not recommended and as such the option is now hidden away. Set your projects Base SDK to 2.2.1 in build settings (Cmd-I on the project file in the source list), then hold down option and go to the Project -> Set Active SDK -> Use Base SDK menu item.This is useful for testing, but if you're submitting to the App store, use the 2.2.1 SDK until 3.0 is final.
coob
A: 

I came across this doc on the iPhone Dev Central that might be useful: Technical Note TN2246

Martin Gordon