Understanding SAP CP SDK for iOS versions and Xcode/iOS compatibility
We deliver the SAP Cloud Platform SDK for iOS as binary Swift frameworks. Unfortunately, up till today Swift frameworks are not binary compatible across Swift versions (https://swift.org/abi-stability/). Within the same major Swift version, at least the source code hugely remains compatible, i.e. code that is compiling with Swift 3.0.1 should also compile with 3.1.
Xcode and Swift
Swift versions are tightly coupled to Xcode versions. E.g. Xcode 8.2 used the Swift 3.0.1 compiler, Xcode 8.3.x uses the Swift 3.1 compiler. Xcode 9 uses the Swift 4 compiler, but also supports a Swift 3.2 mode to ease the transition from Xcode 8. To make things more confusing, binaries compiled with the same Xcode 9 and Swift compiler do work across Swift 3.2 and Swift 4 (think of Swift 3.2 as a compatibility mode in Swift 4, not really a Swift 3.x language version).
SDK release versions
What this means for consumers of the SDK is that the Xcode version you’re using as a developer needs to match the Xcode version that we have used to produce the SDK. This is why we’re mentioning the Xcode version with each available download of the SDK.
On SAP Store, we post recent versions of the SDK at https://store.sap.com/sap/cpa/ui/resources/store/html/SolutionDetails.html?pid=0000014485
On the SAP Marketplace, we have the full archive at https://launchpad.support.sap.com/#/softwarecenter/support/index (and search for ‘SAP Cloud Platform SDK for iOS’)
The versioning of the SDK itself follows SAP conventions; we have major version, service packs, and patches.
In the screenshots above, the most current SDK version is ‘1.0 SP02 PL02’ – version 1, service pack 2, patch level 2. The most recent patch for SP01 on the screenshot is ‘1.0 SP01 PL05’
Xcode and SDK beta versions
In order to support adopters of Xcode beta versions in the time between WWDC and September, we do also post builds of the current recent in-market SDK that are built with the current Xcode beta version. These come with the same restrictions as Xcode beta itself when it comes to (non-) productive use, but it helps to adopt, test, and prepare for the new iOS
SDK and iOS versions
It is important to realize, that there is no one-to-one relationship between Xcode version and iOS version. Even though each new iOS version comes with a new Xcode version that you need to use to leverage the latest iOS SDK, you can also build for older iOS version using the latest Xcode. E.g., Apple will release Xcode 9 with iOS 11 – and for building iOS 11 apps you do need Xcode 9. But you can also continue to build iOS 10 apps with Xcode 9.
Along the same lines, the new SDK major version that we will release closely around the release of a new Xcode/iOS will support the latest iOS and also leverage new iOS features, but we do continue to also support the previous iOS version as well.
In addition, we will also recompile the previous SDK version so it will run (only!) with the latest Xcode. This previous SDK version only uses features of the previous iOS SDK, obviously, but you’ll then need to use the latest Xcode to consume it.
Confused – here’s an example what we intend to make happen soon
SAP CP SDK for iOS v1.0 SP02: uses iOS 10 SDK, supports iOS 10 and 11, requires Xcode 9
SAP CP SDK for iOS v2.0: uses iOS 10 and 11 SDK, supports iOS 10 and 11, requires Xcode 9
Next year in fall (* assuming Apple sticks to the current pattern):
SAP CP SDK for iOS v1.0 SP0X: end of active development
SAP CP SDK for iOS v2.0 SP0X: uses iOS 10/11 SDK, supports iOS 10,11,12, requires Xcode 10
SAP CP SDK for iOS v3.0: uses iOS 11 and 12 SDK, supports iOS 11 and 12, requires Xcode 10