Clint Landry Clint Landry - 1 year ago 55
iOS Question

Objective Sharpie Does Not See Older iPhone SDKs when using iPhoneos 9.3

I am trying to bind a framework that has its own Info.plist which requires iphoneos8.2. Per the documentation

https://developer.xamarin.com/guides/cross-platform/macios/binding/objective-sharpie/tools/

I installed Xcode 6.2 which shows the iPhoneos8.2.sdk inside of Applications/Contents/... so that a sharpie command of

sharpie xcode -sdks -v

should return any sdk found at /Application/Xcode*.app. However, my output still just shows the 9.3 sdks. I also tried copying the 8.2 sdk into the Xcode.app/Contents/.. folders as suggested in other posts on SO to no avail. The output does see both Xcode 7.3.1 and 6.2 but it does not list sdk: iphoneos8.2 under the Xcode 6.2 only the macosx10.10 sdk. Like I said the 8.2 iphoneos8.2 is confirmed in the contents/developer/sdks folder for 6.2.

Does anyone know why the 8.2 sdk would not be found by sharpie?

Answer Source

So here's the short of why this doesn't appear.

Objective Sharpie enumerates /Applications/Xcode*.app thus you would think it would pickup an old iphoneos sdk. However it cannot do that because it has a dependency on clang in which clang has a minimum compatibility version against the respective iphoneos, macosx, and watchos. Thus in this case, iphoneos must be > 8.3 and any that meet this requirement will be detected against the sharpie xcode -sdks command.

These of course come directly from clang:

ios

Apple’s iOS operating system. The minimum deployment target is specified by the -mios-version-min=*version* or -miphoneos-version-min=*version* command-line arguments.

macos

Apple’s Mac OS X operating system. The minimum deployment target is specified by the -mmacosx-version-min=*version* command-line argument. macosx is supported for backward-compatibility reasons, but it is deprecated.

tvos

Apple’s tvOS operating system. The minimum deployment target is specified by the -mtvos-version-min=*version* command-line argument.

watchos

Apple’s watchOS operating system. The minimum deployment target is specified by the -mwatchos-version-min=*version* command-line argument.