目标Sharpie在使用iPhoneos 9.3时没有看到较旧的iPhone SDK

时间:2016-08-19 23:28:32

标签: ios xcode xamarin objective-sharpie

我正在尝试绑定一个拥有自己的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 xcode -sdks -v

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

有谁知道为什么Sharpie不会发现8.2 sdk?

2 个答案:

答案 0 :(得分:2)

所以这里没有出现这种情况的原因。

目标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

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

答案 1 :(得分:1)

对我而言,我所做的就是进入我试图绑定的pod中的所有info.plist,并更改

DTSDKName iphoneos9.3

DTSDKName iphoneos10.2

我通过运行

想出了iphoneos10.2
sharpie xcode -sdks -v

看看我有什么。

我还必须做一个软链接,因为sharpie正在查看错误的框架目录中的头文件。

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

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