I installed SDK 4.0 and found that I lost access to all previous SDK versions prior to 3.2.
I have found a link to download SDK 3.1.3 so I have both .dmg install fil
As I understand it, using any SDKs other than 3.2 and 4.0 is now deprecated for app store submissions. Therefore, logically, those other SDKs are no longer options in xCode (3.2.3) either. IMO, trying to get around this is futile. I've written a community wiki that explains it more fully here.
You need to set the Base SDK to the latest version and set the iPhone Deployment Target to 3.0 for example.
It's recommend to test your application for earlier versions.
The deployment target can be set to anything (even 2.2), but the Base SDK has nothing except 3.2 and 4.0. I would have thought if you set the deployment target to 3.0 for example, that the Base SDK could also be set to 3.0.
So if the deployment SDK is 3.0, and the base SDK is 4.0, which one is being compiled for?
Note in the new SDK, you can't select anything other than 3.2 and 4.0 as mentioned above.
Looks like a problem with apple. I am also getting: "Base SDK Missing" after installing Snow Leopard and the iPhone SDK 4. There is no Base SDK in my case. I'm a newbie to the system and meant to make this a comment, not an Answer.
UPDATE:
After reading the readme that comes with the SDK 4 a little closer, I see that it (xCode 3.2.3 and it's iPhone SDK4) does not support iPhone prior to 3.2 - the solution is to install the older SDK in a different directory. Also, don't forget to update your device if you use the newer xCode/SDK.
ANOTHER UPDATE:
Please ignore this ANSWER and see the one above that was provided by aizuchi. Don't forget to read the part about Base SDK area being a different thing from Deployment.
The terminology is confusing but once you understand this it's easy.
The 'Base SDK' is just the version of the SDK that you are compiling against. So you can use any classes, properties, or methods in the Base SDK.
The Deployment Version is earliest version of the OS that you want users to be able to run your code against. If you use a feature available in the Base SDK version but not in the Deployment version then your code will launch on both versions but will crash on the earlier OS version when you use the new feature, so you need to check if the new feature is present if you want to do this.
So you don't need Base SDK of 3.0 to run on 3.0 - just set Base SDK to 4.0 and Deployment Version to 3.0 and don't use any features of the SDK that weren't present beyond 3.0.