我正在尝试绑定一个拥有自己的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?
答案 0 :(得分:2)
所以这里没有出现这种情况的原因。
目标Sharpie枚举/Applications/Xcode*.app
,因此您会认为它将拾取旧的iphoneos
sdk。但是它无法做到这一点,因为它依赖于clang
clang
与相应的iphoneos
,macosx
和watchos
具有最低兼容性版本。因此,在这种情况下,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.2sharpie xcode -sdks -v
看看我有什么。
我还必须做一个软链接,因为sharpie正在查看错误的框架目录中的头文件。
ln -s Pods/XX/iOS/XX.framework Pods/XX/XX.framework
(当然,在进行软链接之前,删除包含重定向运行&amp; README的Pods / XX / XX.framework目录)