This post is really just an edited summary of instructions found elsewhere. I used instructions from two sources (here incl. comments, and here), the first of which is slightly outdated and incomplete. Here’s the full story:
- Install X-Code from the OSX CD. I only installed the “Developer Tools Essentials” and the “System Tools”. Alternatively, install the “iPhone SDK.mpkg”. The actual iPhone packages will not get installed in this step.
- Open the iPhone SDK disk image and go to the Packages folder. Install all 8 packages that start with iPhone, in particular:
Library/Xcode/Specifications/”. In this directory, you will find a file called “iPhone Simulator Architectures.xcspec”. Make a backup of it and replace it with this file.
For free application programming lessons, go to this website (Stanford University) to download lecture notes and other information for “CS193P iPhone App Programming”. There you will also find links to the free video podcasts.
2009-06-20 Update: Today I tried to upgrade my Xcode installation from 3.1.2 to 3.1.3. After the upgrade install, Xcode would not start, but rather choose to crash every time I tried to start it. Not knowing where the problem might lie, I uninstalled everything, then reinstalled Xcode 3.1.3, and then reinstalled iPhone SDK as described above.
Alas, it still crashes. I found the answer here:
Warning: Xcode 3.1 3 works only with the iPhone SDK packages delivered with the iPhone 3.0 SDK. If you have installed previous releases of the iPhone SDK, you must upgrade to the current release of the iPhone SDK when upgrading to Xcode 3.1.3. You can still develop for iPhone OS 2.0 through 2.2.1 as well as 3.0 using the iPhone 3.0 SDK.
2009-06-21 Update: I am afraid to have to report that the same approach does not work for iPhone SDK 3.0 and Xcode 3.1.3. While I can install and run Xcode, an open a template iPhone app, it will compile with an error and I have not been able to figure out how to get it to work. So I am reverting back to Xcode 3.1.2 and iPhone SDK 2.x. This comment says, it is not possible.