Objective Sharpie 在使用 iPhoneos 9.3 时看不到较旧的 iPhone SDK

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

我正在尝试绑定一个框架,该框架有自己的 Info.plist,它需要 iphoneos8.2。根据文档

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

我安装了 Xcode 6.2,它在 Applications/Contents/... 中显示了 iPhoneos8.2.sdk 以便

的 sharpie 命令

sharpie xcode -sdks -v

应该 return 在 /Application/Xcode*.app 中找到任何 SDK。但是,我的输出仍然只显示 9.3 sdks。我还尝试将 8.2 sdk 复制到 Xcode.app/Contents/.. 文件夹中,如其他帖子中所建议的那样,但无济于事。输出确实看到了 Xcode 7.3.1 和 6.2,但它没有列出 sdk:iphoneos8.2 在 Xcode 6.2 下只有 macosx10.10 sdk。就像我说的,8.2 iphoneos8.2 已在 6.2 的 contents/developer/sdks 文件夹中得到确认。

有谁知道为什么 8.2 sdk 不会被 sharpie 找到?

这就是为什么它没有出现的原因。

Objective Sharpie 枚举 /Applications/Xcode*.app 因此您会认为它会选择旧的 iphoneos sdk。但是它不能这样做,因为它依赖于 clang,其中 clang 具有针对相应 iphoneosmacosxwatchos 的最低兼容性版本。因此,在这种情况下,iphoneos 必须 > 8.3,任何满足此要求的都将根据 sharpie xcode -sdks 命令进行检测。

这些当然直接来自clang:

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

ios

Apple 的 iOS 操作系统。最小部署目标由 -mios-version-min=*version*-miphoneos-version-min=*version* 命令行参数指定。

macos

Apple 的 Mac OS X 操作系统。最小部署目标由 -mmacosx-version-min=*version* 命令行参数指定。出于向后兼容性原因支持 macosx,但已弃用。

tvos

Apple 的 tvOS 操作系统。最小部署目标由 -mtvos-version-min=*version* 命令行参数指定。

watchos

苹果手表OS操作系统。最小部署目标由 -mwatchos-version-min=*version* 命令行参数指定。

对我来说,我所做的就是进入我试图绑定的 pods 中的所有 info.plist,然后更改

DTSDKName iphoneos9.3

DTSDKName iphoneos10.2

我想出了 iphoneos10.2 运行ning

sharpie xcode -sdks -v

看看我有什么。

我还必须做一个 soft-link 因为 sharpie 正在查看头文件的错误框架目录。

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

(当然,在执行软link之前删除包含重定向运行 & README 的Pods/XX/XX.framework 目录)