14

In earlier versions of Xcode I could set the base SDK to the current iOS version and the deployment target to an earlier version as shown in the below slide from the iOS 7 TechTalk, session Architecting Modern Apps, Part 2:

iOS 7 TechTalk, session Architecting Modern Apps, Part 2

This Stack Overflow question elaborates nicely on the Base SDK vs Deployment target.

What's the meaning of Base SDK, iOS deployment target, Target, and Project in xcode

However, now when I look at the base SDK config field in Xcode I just see "iOS" (which is an alias of "iphoneos").

According to https://developer.apple.com/ios/submit/

Starting March 2019, all iOS apps submitted to the App Store will need to be built with the iOS 12.1 SDK or later, and support the all-screen design of iPhone XS Max or the 12.9-inch iPad Pro (3rd generation).

This worries me because it seems that I can no longer target older versions of iOS.

I've done a lot of research by I cannot seem to work out definitively whether there still a way to use the 12.1 SDK but target older versions of iOS. Is there a way to do this?

Sean Dawson
  • 5,587
  • 2
  • 27
  • 34
  • You can build an app that runs on older versions of iOS by selecting the appropriate deployment target (no earlier than iOS 8). You must use the 12.1 Base SDK. – Paulw11 Feb 24 '19 at 23:11
  • But selecting a deployment target to an earlier version causes the base SDK to also go to an earlier version. How can I set the base SDK to 12.1? – Sean Dawson Feb 24 '19 at 23:17
  • It doesn't. As you said, the base SDK is just "iOS". Where are you seeing a specific Base SDK version in Xcode? – Paulw11 Feb 24 '19 at 23:20
  • In the event someone’s coming from Google and actually means the base SDK, relevant question is https://stackoverflow.com/questions/11424920/how-to-point-xcode-to-an-old-sdk-so-it-can-be-used-as-a-base-sdk – ReinstateMonica3167040 Feb 12 '23 at 00:05

2 Answers2

16

The base SDK is just "iOS". The exact version will depend on your version of Xcode (12.1 if you are using Xcode 10.1). The base SDK does not determine which versions of iOS are supported by your app.

You set the minimum version your app is compatible with by specifying the "iOS deployment target", either for your project as a whole:

enter image description here

or in the settings for a specific target in your project

enter image description here

The oldest version of iOS that you can target with Xcode 10 is iOS 8 (which is pretty old).

Paulw11
  • 108,386
  • 14
  • 159
  • 186
  • 1
    So if I build the app with Xcode 10.1 but set the deployment target to a version of iOS that is earlier than 12.1, Apple will let me submit the app after March? – Sean Dawson Feb 25 '19 at 00:20
  • 1
    Yes, That is correct. The deployment target is not the Base SDK. – Paulw11 Feb 25 '19 at 00:23
2

BTW, you can see or select the Base SDK you are using, in the Xcode Preferences/Locations:

enter image description here

Viker
  • 3,183
  • 2
  • 25
  • 25