Add support for newer iOS versions in Xcode

May 26, 2021

This article is an aggregated knowledge from: https://developer.apple.com/forums/thread/673131?answerId=661007022#661007022

Why?

Usually with a minor iOS version update, say, from 14.4.x to 14.5.x Apple releases new Xcode version as well. In majority of the cases (at least Apple hopes so) people just update Xcode from the AppStore and there is no problem.

Sometimes, though, you can not update Xcode, but you need to use a device with a newer iOS version. Couple of examples when this might happen:

  • Update to the next version of Xcode requires macOS update and you can not do it.
  • Your entire team uses the same version of Xcode and updating to the next version can lead to incompatibility issues, which are highly unwanted at this specific moment.

Solution

The main idea is that support for iOS versions can be copied from newer Xcode to the old one, as it’s just a couple of files.

Obviously, this might not work for all the combinations of Xcode <> iOS, because it’s sort of a hack. But it’s worth a try before doing something else way more energy or time consuming.

1. Locate “Device support” folder

There is a folder inside Xcode, that holds support for different iOS versions: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport (if you are not familiar with Terminal just right click on Xcode, then chose “Show Package Contents” and go to Contents -> Developer -> Platforms -> iPhoneOS.platform -> DeviceSupport). There you would find all the iOS versions your Xcode supports now, when working with real iPhones.

2. Find device support files for desired iOS

Say, you need to deploy to iOS 14.5, but the latest version supported by your Xcode is 14.4. Then you need to find device support files for 14.5 and copy them to your Xcode. This can be done by multiple ways, but here I’ll provide at least two of them:

  1. If you have a newer Xcode version installed somewhere else (another machine, friends machine, etc.), you can just go to DeviceSupport folder (the same as in step 1) on that machine and copy the files for needed iOS version.
  2. There is a repository on GitHub with device support files for different iOS versions. Disclaimer: I’m not the author of this repository and I advice to exercise caution if you would download anything from there. I, personally, would prefer the 1st option, whenever possible.

3. Make this all work

After you’ve downloaded device support files for needed iOS version, say for 14.5, you need to put them inside DeviceSupport folder from step 1. After that you need to:

  1. Clean builder folder (in Xcode go to Product -> Clean Builder folder)
  2. Delete DerivedData folder (to locate this folder go to Xcode -> Preferences -> Locations).

Hopefully this will work for you, at least it did the trick for me :)