我遍历了有关为iOS的Zendesk SDK进行Xamarin绑定的文档。该文档将指导我们完成创建.a文件并继续进行绑定的方案。 Zendesk库以框架的形式提供,尽管Xamarin文档说框架包含.a文件,但我仍然在Zendesk框架中找不到.a文件。因此,我在这里有点受阻。这里有指针吗?
链接到Zendesk库:https://github.com/zendesk/zendesk_sdk_ios 链接到Xamarin文档:https://docs.microsoft.com/en-us/xamarin/ios/platform/binding-objective-c/walkthrough?tabs=vsmac
我执行了客观的沙皮狗命令。尽管它说绑定已经完成,但是它没有生成apidefinition.cs和structsAndEnums.cs文件。以下是我在终端中看到的输出。
C02VX2ZCHTD6:〜naveen.ramachandrapp $ sharpie bind -output = Zen -namespace = zen -sdk iphoneos11.3 -framework /Users/naveen.ramachandrapp/Downloads/zendesk_sdk_ios-masterObjectiveC/ZendeskSDK/4.1/ZendeskProviderSDK.framework 正在解析1个头文件...
绑定... [写] ApiDefinitions.cs [write] StructsAndEnums.cs
绑定分析: 自动绑定已完成,但是有一些 已用[验证]标记的API 属性。虽然整个绑定应该是 经过审核以获取最佳API设计规范,更多信息 具有以下验证属性的API紧密相关 提示:
MethodToProperty(30个实例): Objective-C方法被绑定为C#属性 由于约定,例如不带参数和 返回值(非无效返回)。常用方法 像这些应该绑定为属性 展示更好的API,但有时会出现假阳性 可能发生,并且绑定实际上应该是 方法。
StronglyTypedNSArray(25个实例): 本机NSArray *被绑定为NSObject []。它 可能可以更强烈地键入数组 在基于期望的约束中 API文档(例如标题中的注释 文件)或通过检查数组内容 测试。例如,仅包含一个NSArray * NSNumber *实例可以绑定为NSNumber [] 而不是NSObject []。
ConstantsInterfaceAssociation(2个实例): 没有万无一失的方法来确定 Objective-C接口一个外部变量 声明可能是关联的。这些实例 绑定为[Field]属性中的部分 接口到附近的具体接口 产生更直观的API,可能会消除 完全是“常量”界面。
PlatformInvoke(3个实例): 通常,P / Invoke绑定不正确或 作为Objective-C绑定完成(至少 目前)。您可能需要修复库 名称(默认为“ __Internal”)并返回/ 手动参数类型以符合C调用 目标平台的约定。你可能会发现 您甚至都不希望在您的计算机中公开C API 绑定,但是如果这样做,您可能还想要 将定义重新定位为更合适的 类并公开更强大的类型安全包装器。对于 P /调用指南,请参见http://www.mono-project.com/ docs / advanced / pinvoke/。
验证了“验证”属性后, 应该从绑定源代码中删除它。的 验证属性的存在是有意引起的 构建失败。
有关“验证”属性的更多信息 以上提示,请咨询Objective Sharpie 通过运行“夏普文档”或访问文档 以下网址:
http://xmn.io/sharpie-docs
答案 0 :(得分:0)
您误读了文档。它明确列出了3种不同方案:
通常在iOS生态系统中,您可以找到3种口味的库:
作为带有.a扩展名的预编译静态库文件以及 其标题(.h文件)。例如,Google的Google Analytics(分析)库
作为预编译的框架。这只是一个包含静态内容的文件夹 库,标题和有时带有.framework的其他资源 延期。例如,Google的AdMob库。
仅作为源代码文件。例如,仅包含.m和.h目标C的库 文件。
因此,您可以使用.a
文件 或 创建预编译的.framework
(根据您的情况) 或 使用.h
和.m
文件。无需在.a
文件中查找.framework
文件。
您可以使用客观的Sharpie帮助您为绑定创建ApiDefinition.cs文件,如下所示:
sharpie bind -framework ZendeskCoreSDK.framework -sdk iphoneos11.1
这里有