139
votes

I still have Snow Leopard. I have Xcode 4.2 for iOS development. This morning I upgraded my iPhone and iPad to iOS 5.1.

But Xcode 4.2 is not detecting my device for testing. I could not find the iOS 5.1 SDK image on Apple's developer site, for Xcode 4.2.

I don't want to do upgrade to Lion to get XCode 4.3 at this time.

Will I able to use Xcode 4.2 (on Snow Leopard) for iOS development now?

15

15 Answers

213
votes

To get Xcode 4.2 on Snow Leopard to run code on a device running iOS 5.1 you can do this:

  1. If you have another Mac running Lion and Xcode 4.3.1 you can copy the files from:

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1 (9B176)

  2. Place the copied files in the equivalent place on your Snow Leopard Mac: probably

    /Developer/Platforms/iPhoneOS.platform/DeviceSupport

  3. Similarly copy the iOS 5.1 SDK files found in this directory:

    /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk

  4. Also copy 'version.plist' from the Lion machine in the iPhoneOS.platform folder to the Snow Leopard machine.

  5. Re-start Xcode on the Snow Leopard machine and re-connect the devices and it seems happy enough.

If you don't have access to a machine with Lion and Xcode 4.3.1:

  1. You can get the files out of the 4.3.1 DMG which can be downloaded from Apple here: Downloads for Apple Developers.

  2. Mount the DMG, Show Package Contents on the Xcode icon and drill down to

    /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport

  3. Follow the steps above.

You might find it more convenient to use Apple's proprietary ditto method (sudo ditto src dest) in the terminal window to copy the folders.

Note,this hack will also work for latest iOS 6 SDK.

14
votes

You have to get Lion, iOS 5.1 SDK is only for Xcode 4.3.1 which is only available for Lion.

... and your Xcode will not be able to build to your device if you have already updated it to 5.1 because it won't be on that version of Xcode's approved SDKs

14
votes

I'm working on this now. I have the same issue.

The MAJOR PROBLEMS here are that:

1) Apple never provided a warning dialog that this might disable people developing under Snow Leopard.

2) There is no easy way to undo this.

3) This should not happen on a point release update.

I've tried to install the previous ipsw from 5.0.1 for my Gen 4 IPod Touch from here: where to download ipod touch firmware restore links It will not install.

I've downloaded the Lion Xcode 4.3.1 from here (sign in as a developer first) Lion Xcode 4.3.1

And run some scripts from the Dev Forums here:

sudo cp -R /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
sudo cp -R /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/

sudo cp -R /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1\ \(9B176\) /Developer/Platforms/iPhoneOS.platform/DeviceSupport/
cd /Developer/Platforms/iPhoneOS.platform/DeviceSupport/

sudo rm -f ./Latest

sudo ln -s ./5.1\ \(9B176\) ./Latest

Unmounted the Lion DMG and restarted Xcode. This allowed me to test 5.1 in the simulator but broke every build to every device with a SIGABRT or link error.

I'm off to the Apple store to have them restore my device. If I get any more information, I'll let you all know. This has been a VERY EXPENSIVE and VERY UNPLEASANT surprise.

8
votes

Adding to Richards solution above, I found that if you also copy, from XCode 4.3.1 dmg...

edit: updated to correct path within dmg

/Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Develope‌​r/SDKs/iPhoneOS5.1.sdk ~~ (entire directory tree)

to

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

XCode debugger will startup correctly (without all the error log and dumps)

ie:
===============================================================================
warning: Unable to read symbols from "dyld" (prefix __dyld_) (not yet mapped into memory).
warning: Unable to read symbols from "SystemConfiguration" (not yet mapped into memory).
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1 (9B176)/Symbols/System/Library/Frameworks/MessageUI.framework/MessageUI (file not found).
warning: No copy of dyld found locally, reading from memory on remote device.  This may slow down the debug session.
warning: No copy of <No file name> found locally, reading from memory on remote device.  This may slow down the debug session.
warning: No copy of <No file name> found locally, reading from memory on remote device.  This may slow down the debug session.
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1 (9B176)/Symbols/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration (file not found).
warning: No copy of SystemConfiguration.framework/SystemConfiguration found locally, reading from memory on remote device.  This may slow down the debug session.
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1 (9B176)/Symbols/System/Library/Frameworks/MessageUI.framework/MessageUI (file not found).
warning: No copy of MessageUI.framework/MessageUI found locally, reading from memory on remote device.  This may slow down the debug session.
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1 (9B176)/Symbols/System/Library/Frameworks/AudioToolbox.framework/AudioToolbox (file not found).
warning: No copy of AudioToolbox.framework/AudioToolbox found locally, reading from memory on remote device.  This may slow down the debug session.
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1 (9B176)/Symbols/System/Library/Frameworks/iAd.framework/iAd (file not found).
warning: No copy of iAd.framework/iAd found locally, reading from memory on remote device.  This may slow down the debug session.
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1 (9B176)/Symbols/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices (file not found).
warning: No copy of SpringBoardServices.framework/SpringBoardServices found locally, reading from memory on remote device.  This may slow down the debug session.
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/5.1 (9B176)/Symbols/System/Library/PrivateFrameworks/FTClientServices.framework/FTClientServices (file not found).
warning: No copy of FTClientServices.framework/FTClientServices found locally, reading from memory on remote device.  This may slow down the debug session.
===============================================================================
7
votes

There is an answer here that also provides the copy of the simulator v 5.1. No manual operations. Just open the Terminal, copy and paste the provided commands.

http://www.iphonedevsdk.com/forum/iphone-sdk-development/100229-snow-leopard-sdk-5-1-a.html

5
votes

if you want to also add iphone simulator 5.1 to your xcode then copy

/Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.1.sdk

entire directory to the following path =>

/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/

after you can also able to use iPhone simulator 5.1 to debug your application.

5
votes

You can use apps compiled for 5.0 on your 5.1 or 5.1.1 device by compiling them and manually dragging .app file to iTunes. Tried today on 10.6.8 and XCode 4.2.

4
votes

Download the iOS 5.0.1 firmware of your device on this link : http://www.iphonefirmware.com/firmwares-download.

And do a manual restore on iTunes.

I did it today (March 8) on my iPad 2 and it works, Apple still seems to sign this iOS version.I guess not for a long time, so do it quickly.

3
votes

It is not possible to use a 5.1 device on xcode 4.2, since you don't want to upgrade, you can use the organizer, select your device, and use the restore feature. You can google for the 5.0.1 version and use that one.

(although upgrading to lion is super cheap)

EDIT: Seems this is possible, scroll up for the highest voted answer.

3
votes

I am using Mac OS X 10.6.8 and Xcode 4.2 and also upgraded my iPhone to iOS 5.1. I needed to get a test version onto the device in a hurry yesterday but did't have the time to install Lion and Xcode 4.3.

I've been using TestFlight (www.testflightapp.com) for beta testing. I created an .ipa archive from Xcode 4.2 and was able to install it on my iOS 5.1 upgraded iPhone via TestFlight.

I know it's not an ideal solution but it helped me get out of a tight spot yesterday without resorting to hacks.

p.s. I'm not affiliated with TestFlight in any way.

2
votes

Xcode 4.2 seems no more available on developer.apple.com for snow leopard users :( also for registered paying iOS developer like me...

It seems that at the moment there is no legal way to get it...

2
votes

You must add the Symbols alias too..for example in /Developer/Platforms/iPhoneOS.platform/DeviceSupport/6.0 (10A403) you must add Symbols alias that point to /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk so xcode 4.2 can detect your ios6 device (tested on mac mini 1.5 intel core solo with snow leopard). Cheers

1
votes

I think you can test ios 5.1 device in Snow Leopard as explained in above posts. But it is always safe to upgrade to Lion and use the official sdk release. Because we cant predict what issue could happen if we do some "Tricks" on our machine to make it happen and it may happen when in your most unwanted time (like when submitting to appstore). :)

1
votes

As of the date of this writing 3/20,2012, Apple is not letting people install previous ipsw files from 5.0.1. If you upgraded your device to iOS 5.1, like I did with my gen 4 Touch, then you either have to get iOS 5.1 running in Xcode 4.2, or you have to revert your device to 4.x, or you replace your device.

I brought my touch to the Apple Store and they replaced it.

If you install the ipsw for 5.0.1, Apple's servers will state that this is not allowed for your device and you will be unable to revert. You'll have to try 4.x to your device or make sure that the iOS 5.1 SDK is running in Xcode 4.2.

0
votes

I have found how to solve it!

My system is Snow Leopard 10.6.8, and I have two sets of Xcode of 3.2.5 and 4.2, after I had upgraded my iPad 1 to iOS 5.1, I launched Xcode 3.2.5, it prompted me a window of 'unknown device was found', I answer 'Yes' to download lots of libraries from my iPad, several minutes later, I can debug and run my projects on my iPad!

Then I launched Xcode 4.2 and opened one of my previous projects, I can really debug and run it on my iPad!

In this way you can use either version of Xcode to develop apps on a Snow Leopard system.