Working with Multiple Versions of Xcode

App Store Preferences

Life is Not That Simple!

  • It sets the base SDK version that you are building against. This can implicitly opt you in to certain OS features or device support. For example, building against the iOS 12 SDK in Xcode 10.x opts your app in to support the iPhone XS Max and iPhone XR screen sizes. Build with Xcode 9.x (against the iOS 11 SDK) and even when opened on an iPhone XS Max running iOS 12, your app will use the iPhone X resolution and be scaled to fill the larger screen. See How iOS Apps Adapt to the iPhone XS Max and iPhone XR Screen Sizes for more information.
  • For Swift code, the version of the language itself can change. This was particularly important during the Swift 2.x to 3.0 timeframe when the language underwent many significant, and incompatible, changes. Still using Swift 3? You can’t use Xcode 10.2 or higher. Upgraded your code to Swift 5? You can’t use Xcode 10.1 or lower.
  • Support for older OS versions. Xcode is quite aggressive at dropping simulator support for older iOS versions. If you want simulator support for more than the current and previous two or three major iOS versions, you often can’t use the latest Xcode release.
  • Xcode betas. At the time of writing, WWDC 2019 is about to start. If you want to start testing against beta OS versions or take advantage of new APIs, you’re going to need to use a beta version of Xcode. You can’t release app updates built with a beta version of Xcode.

Installing Multiple Versions of Xcode

  • Download. Download the .xip file.
  • Unarchive. Double click the .xip file in your Downloads folder to unarchive it.
  • Download. Download the .dmg file.
  • Install. Double click on the .dmg file. The installer suggests dragging Xcode.app to the Applications folder. If you already have an Xcode.app in /Applications (perhaps the Mac App Store version), don’t do that. Instead, drag it to your desktop.
  • Rename. Rename the Xcode.app file to include the version number (e.g. “Xcode10.2.1.app”) to identify the version and to set a unique filename. Downloads of beta versions of Xcode already have a unique name and this step is not required (unless you prefer to use an alternate name).
  • Move to /Applications. Drag the file to your Applications folder.
  • Since March 2019 all iOS apps submitted to the App Store need to be built with at least Xcode 10.1 (against the iOS 12.1 SDK) in order to support the iPhone XS Max and 3rd generation 12.9" iPad.
  • From April 2020, all new apps and app updates for iPad will need to be built with Xcode 11 (against the iOS 13 SDK) in order to support the all-screen design of the 3rd generation 12.9" iPad Pro.

Command Line Tools

Xcode Preferences
$ sudo xcode-select -s /Applications/Xcode10.app/Contents/Developer$ xcode-select -p
/Applications/Xcode10.app/Contents/Developer

Launching different Xcode Versions

About Xcode
⌘-Tab App Switcher
Spotlight Search for “xcode”

XcLauncher

XcLauncher’s Open Xcode menu

Other Articles That You Might Like

--

--

--

Independent and freelance software developer for iPhone, iPad and Mac

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

AWS Certified in just three weeks

Exploratory Testing

How to get your final year research project done: The research project idea

Hide Sensitive Information in the iOS App Switcher Snapshot Image

Setup and Install XWiki — In Detail

Python — Beginners guide Part 1

Feminist Blogging is Dying Out

Day 18: Making our player grab a ledge and snap to a good hand position

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Geoff Hackworth

Geoff Hackworth

Independent and freelance software developer for iPhone, iPad and Mac

More from Medium

Pin Header to the top in a multi-sections UICollectionView

Hot-Reloading — Swift and SwiftUI

Filter in Swift — Best Practices

Accessibility on Apple’s platforms