24
votes

I have multiple versions of Xcode installed. I can build my project against older iOS versions by launching old Xcode. But how could I use newer Xcode versions to build against older iOS versions?

In the project settings there's a Base SDK dropdown. It only offers the very latest iOS version for selection.

Under /Developer/Platforms/ there is an iOS.platform folder which contains this:

SDKs/
  iPhoneOS3.2.sdk
  iPhoneOS4.1.sdk

And finally, there is an interesting folder called DeviceSupport, which contains a whole bunch of versions ranging from 3.0 to 4.1!

There must be a way to copy SDKs / DeviceSupport files from old Xcode to new Xcode and make the older ones like iOS 4.0 or even 3.0 working. How?

3
Here is a very helpful thread on this, especially for Xcode 4 users on OS X Lion: stackoverflow.com/questions/7459399/… - Jan

3 Answers

24
votes

To make an application target that runs on multiple versions of iOS is relatively simple: Set the “Base SDK” in your projects settings to the newest version number of iOS whose features you may want. Set the “iPhone OS Deployment Target” to the oldest version number of iOS that you will support

you will need to install older versions of xcode since the newer simulator will only support the newer ios versions

http://developer.apple.com/library/mac/#documentation/Xcode/Conceptual/XcodeCoexistence/Contents/Resources/en.lproj/Details/Details.html

4
votes

This became harder in Xcode 3.2.5 (iOS 4.2.1) as the separate "Base SDK" values for Device and Simulator are replaced with a single "iOS SDK".

See my post in Xcode/Simulator: How to run older iOS version? for details on how to access older Simulator SDK versions in this latest Xcode.

0
votes

I think you should always build using the latest SDK and just set the deployment target to the appropriate version. To ensure your app runs correctly, check everything carefully on all versions and besides check the documentation if the APIs you are using have changed / removed / been deprecated in the different versions of the SDK!