Xcode 8 with Older Base Sdk

Xcode 8 with older Base SDK

Starting with Xcode 7.3, in addition to copying in the SDK, you must also edit a certain Info.plist file, as described here for macOS in the post by agx. It looks like there is a similar file for iOS, at

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist

Try changing the value of MinimumSDKVersion in there from 10.0 to whatever SDK version you want.

I've not tried this with iOS, but, using this workaround, I was just able to build a macOS target with macOS 10.6 using Xcode 8.0 (8A218a) (the "GM").

UPDATE

The hack described above stopped working for me in Xcode 9. If you want to use Xcode 9+, see my more recent answer dated Nov 22, 2017.

Xcode 8: Compile with iOS 9.3 base SDK?

Unfortunately, it doesn't look like there's a way to change the SDK version in Xcode Beta; it could be either a bug or just the fact that Apple wants you using the beta SDK alongside the beta software. Like @l'L'l said, one must open the app in stable Xcode in order for the App Store to accept the submission.

However, I did find that downgrading the project to Swift 2 wasn't exorbitantly difficult. It only took me an hour to "downgrade" the entire project by manually fixing all of the errors in Xcode 7.3. In case it will help anyone, the main patterns I noticed during the process were:

  • Changing function declarations to not have an _ before the first argument, because the first argument is not anonymous in Swift 3
  • Removing the first argument label from all function calls, which sometimes involves renaming the function (including in delegates, which sometimes don't report an error)
  • Changing a couple built-in properties, like label.isOn to label.on
  • Adding NS before several object names, like NSData and NSTimer, which became Data and Timer in Swift 3, respectively
  • "Downgrading" the Storyboard by re-saving it
  • Compile using Xcode-stable but upload with Xcode-beta; Xcode-stable had issues with my provisioning profiles, but it turns out it doesn't matter which version you use the upload the binary from Organizer

Xcode 8 : Build app with iOS 9 Base SDK

You may refer these.

Xcode 8 with older Base SDK

https://forums.developer.apple.com/thread/43381

How do I set a previous base SDK in Xcode 10?

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:

Sample Image

or in the settings for a specific target in your project

Sample Image

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

Base SDK 6.1 doesnt show iOS 8 simulators in Xcode 6.0.1

Download the other available iOS simulators (7.1 , 7.0 and 6). Worked for me

How to point Xcode to an old SDK so it can be used as a Base SDK?

You'll need to add a symlink to the old SDK (this is generally easier than copying).

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
ln -s /path/to/old/SDK .

This works fine back to 10.5. Beyond that things get a little more complicated...

While there's no promise in future versions of Xcode that this will be supported, I've chatted with the Xcode team about it and they don't seem keen on changing it anytime soon.

Personally I often keep /path/to/old/SDK in a top-level directory called /SDKs. That way every time I upgrade it's easy to fix everything up.

EDIT: I have a fix-xcode script that simplifies re-applying this fix every time Xcode upgrades.


UPDATE: In modern versions of Xcode (7.3+) to use older SDKs edit MinimumSDKVersion here:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Info.plist

Are older versions of iOS Simulator the same as the iOS SDK?

I think I understand what you're asking, as the answer is no: the iOS simulators are named for the hardware they simulate and the version of iOS that they run; e.g iPhone 5s (7.1).

Xcode 6 only ships with iOS 8 SDK. This this the "Base SDK" (SDKROOT). You can think of it as a "best compilation target" or "best supported version" -- it's the SDK version you compile against. The "Deployment Target" (IPHONEOS_DEPLOYMENT_TARGET) defines the lowest supported version of iOS you support. As your app matures, and the range between the two widens, you need to do more and more runtime detection of supported features, or handle API differences, where for e.g., a newer call is preferred on newer platforms, and nonexistent on older ones.

An app compiled against (Base SDK) 7.1 will run on iOS 8.0 devices. You can think of this as "iOS 7 mode". A better example was the move from iOS6 to 7 -- apps compiled against iOS6.1 "Base SDK" ran on iOS7 devices but they looked like the old UI style. The moment they were compiled against iOS7.x "Base SDK", they looked appropriate for iOS6 or 7.

I have an app I'm supporting as "Base SDK" 7.1 at the moment, and I managed to copy over the old 7.1 SDK and compile against it. Honestly, it's more trouble than it's worth, IMHO. If you still have Xcode 5 around, and require only up to 7.1 at the moment, you may just want to use that. Given that iOS 8.0 is out, and if your app is new, you probably don't need to worry about this at all -- you likely just want to make sure you support iOS 7.x, and that's AOK.

Given an app that (for e.g.) has a deployment target of 7.0 and a base sdk of 8.0, any compatibility concerns are up to you to handle. Some methods may behave differently (though Apple strives to maintain API compatibility), and other methods will be deprecated or just different. The docs do a pretty good job about spelling out differences and deprecations.



Related Topics



Leave a reply



Submit