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?

ClintL
  • 1,424
  • 14
  • 30
  • I think there's two things that happen. First is that it enumerates the `/Applications/Xcode*.app` path. Secondly, it ensures that the application is also supported by sharpie. I believe in the `iphoneos` sense, it needs to be `> 8.3`. Maybe as an experiment on your end, you can try something `>= 8.3`. – Jon Douglas Aug 20 '16 at 00:44
  • I did see 8.4 when I installed a later version of Xcode but I cannot find any documentation stating the minimum supported iphoneos version – ClintL Aug 22 '16 at 03:43

2 Answers2

3

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:

http://clang.llvm.org/docs/AttributeReference.html#availability

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.

Jon Douglas
  • 13,006
  • 4
  • 38
  • 51
1

For me, what I did, was to just go into all the info.plist's in the pods I was trying to bind, and change

DTSDKName iphoneos9.3

to

DTSDKName iphoneos10.2

I came up with iphoneos10.2 by running

sharpie xcode -sdks -v

to see what I had available.

I also had to do a soft-link as sharpie was looking into the wrong frameworks directories for header files.

ln -s Pods/XX/iOS/XX.framework Pods/XX/XX.framework

(of course, remove the Pods/XX/XX.framework directory that contains a redirect run & README before doing the soft link)

djunod
  • 4,876
  • 2
  • 34
  • 28