如何为 estimote 构建 Xamarin 绑定库-sdk.aar

How to build Xamarin Binding Library for estimote-sdk.aar

我想在 Xamarin 中为 Android 应用程序使用 Estimote Beacon SDK。由于 Xamarin 的 Estimote SDK [1] 非常过时,我正在考虑将官方 Estimote SDK [2] 包含到项目中,该项目提供了一个 estimote-sdk.aar 我试图包含和使用的文件。 Xamarin 文档建议为此创建一个绑定库 [3]。

所以我按照这些步骤制作了一个绑定库,添加了 .aar 并将其 Build Action 设置为 LibraryProjectZip 但我遇到了几个错误:

虽然我可以解决像

这样的错误

member names cannot be the same as their enclosing type

通过 Metadata.xml 重命名成员,如下所示:

<attr path="/api/package[@name='com.estimote.sdk.cloud.model.google']/class[@name='Beacons']/field[@name='beacons']" name="name">BeaconsList</attr>

我不知道如何解决像

这样的错误

"Buffer" does not implement interface member "IBufferedSink.Buffer()"

如何解决?
将 Estimote SDK 包含到 Xamarin for Android 应用程序的最佳方法是什么?

[1] Xamarin Inc. Android 的 Estimote SDK https://components.xamarin.com/view/estimotesdkandroid
[2] Android https://github.com/Estimote/Android-SDK
的官方 Estimote SDK [3] 在 Xamarin 开发者门户中绑定 .AAR https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/binding-an-aar/

支持 Estimote SDK 的最佳方式是自己进行绑定。我们确实有一个组件团队,他们试图掌握每个版本,但每天都有如此多的新版本和新库出现。它可以提供相当大的挑战。

  1. "Buffer" does not implement interface member "IBufferedSink.Buffer()"

这通常意味着 class 没有实现相应的接口成员。您有几种方法可以解决此错误。

  1. 创建一个 Partial class 你的冒犯 class 并实施 接口成员.

  2. 查看 api.xml 以确保 class 正在实施所有 接口的成员。检查所有 return 类型/参数/等以确保它们匹配正确的类型。然后,您必须通过 Metadata.xml.

  3. 更改 managedReturnmanagedTypepropertyName

作为一般参考,我有一个小的装订指南,您可以在这里找到:

https://gist.github.com/JonDouglas/dda6d8ace7d071b0e8cb

具体来说,您可能对常见的元数据修复最感兴趣:https://gist.github.com/JonDouglas/dda6d8ace7d071b0e8cb#common-metadata-fixes