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
具有针对相应 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
苹果手表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 目录)
我正在尝试绑定一个框架,该框架有自己的 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
具有针对相应 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
苹果手表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 目录)