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

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

有谁知道为什么Sharpie找不到8.2 sdk?

4

2 回答 2

3

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

Objective Sharpie 枚举/Applications/Xcode*.app因此你会认为它会拾取一个旧的iphoneossdk。但是它不能这样做,因为它依赖clang于其中clang具有针对相应iphoneosmacosxwatchos. 因此,在这种情况下,iphoneos必须> 8.3,并且将根据该sharpie xcode -sdks命令检测任何满足此要求的内容。

这些当然直接来自clang:

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

IOS

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

苹果系统

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

tvos

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

手表

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

于 2016-08-22T14:36:35.090 回答
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

(当然,在做软链接之前,删除包含redirect run & README 的Pods/XX/XX.framework 目录)

于 2017-03-18T01:50:30.817 回答