Objective Sharpie 入门

重要

Objective Sharpie 是一种工具,适合精通 Objective-C(和通过延伸学习精通 C)且经验丰富的 Xamarin 开发人员。 在尝试绑定 Objective-C 库之前,你应该具备有关如何在命令行上生成本机库的扎实知识(并充分了解本机库的工作原理)。

安装 Objective Sharpie

Objective Sharpie 目前是适用于 Mac OS X 10.10 及更高版本的独立命令行工具,并且不是完全受支持的 Xamarin 产品。 它只能由高级开发人员用来帮助创建与第 3 方 Objective-C 库的绑定项目。

Objective Sharpie 可以作为标准 OS X 包安装程序下载。 运行安装程序,并按照安装向导中的所有屏幕提示进行操作:

提示

使用 sharpie update 命令更新为最新版本。

基本演练

Objective Sharpie 是 Xamarin 提供的命令行工具,可帮助创建将第三方 Objective-C 库绑定到 C# 所需的定义。 即使使用 Objective Sharpie,开发人员也需要在 Objective Sharpie 完成后修改生成的文件,以解决该工具无法自动处理的任何问题

如果可能,Objective Sharpie 会批注对如何正确绑定有疑问的 API(本机代码中的许多构造不明确)。 这些批注显示为 [Verify] 属性

Objective Sharpie 的输出是一对文件(ApiDefinition.csStructsAndEnums.cs),可用于创建一个绑定项目,该项目编译为可在 Xamarin 应用中使用的库。

重要

Objective Sharpie 附带了一条关于正确使用的主要规则:必须向其传递正确的 clang 编译器命令行参数,以确保正确分析。 这是因为 Objective Sharpie 分析阶段只是一个针对 clang libtooling API 实现的工具。

这意味着 Objective Sharpie 拥有 Clang(实际编译要绑定的本机库的 C/Objective-C/C++ 编译器)的全部功能及其用于绑定的头文件的所有内部知识。 Objective Sharpie 将 AST 转换为适合输入到 bmacbtouch Xamarin 绑定工具的 C# 绑定“基架”,而不是将分析后的 AST 转换为对象代码。

如果 Objective Sharpie 在分析过程中出错,则意味着 clang 在尝试构造 AST 的分析阶段出错,你需要找出原因。

新增功能! 版本 3.0 尝试通过直接支持 Xcode 项目来解决一些这种复杂性。 如果本机库具有有效的 Xcode 项目,Objective Sharpie 可以评估项目的指定目标和配置,以推断必要的输入头文件和编译器标志。

如果没有可用的 Xcode 项目,则需要通过推断正确的输入头文件、头文件搜索路径和其他必要的编译器标志来更加熟悉该项目。 请务必认识到,用于生成本机库的编译器标志与必须传递给 Objective Sharpie 的编译器标志相同。 此过程需要更多手动操作,并且确实需要熟悉如何使用 Clang 工具链在命令行上编译本机代码。