我们已经介绍了如何通过 .NET 绑定 iOS 原生库 ,本篇开始介绍一下如何通过 .NET 绑定 Android 原生库。
Android 的库
Android 的库以 .jar 做打包, 通过工具你可以将多个 .jar 完成绑定,然后通过 C# 调用原生的 Java 库。对比起 iOS , Android 的库绑定简单很多。
从上图可以看到 Xamarin.Android / .NET for Android 通过使用托管可调用包装器 (MCW) 实现绑定。 MCW 是一个 JNI 桥,在托管代码需要调用 Java 代码时会使用它。 托管可调用包装器还支持对 Java 类型进行子类化以及覆盖 Java 类型的虚拟方法。 同样,每当 Android 运行时 (ART) 代码需要调用托管代码时,它都会通过另一个称为 Android 可调用包装器 (ACW) 的 JNI 桥来实现。
创建一个 Android 原生库绑定项目
通过命令行创建一个 Android 原生库绑定项目
dotnet new android-bindinglib -o Droid.AMap
进入该项目我们看看文件结构
项目里面有 Transforms 文件夹有对应的三个 xml 文件,分别是 EnumFields.xml ,EnumMethods.xml , Metadata.xml , 各自作用如下 :
MetaData.xml – 允许对最终 API 进行更改,例如更改生成的绑定的命名空间。
EnumFields.xml – 包含 Java int 常量与 C# enums 之间的映射。
EnumMethods.xml – 允许将方法参数和返回类型从 Java int 常量更改为 C# enums
其中 MetaData.xml 文件是这些文件中的最常见的导入,因为它允许对绑定进行一般用途的更改,例如:
重命名命名空间、类、方法或字段,使其遵循 .NET 约定。
删除不需要的命名空间、类、方法或字段。
将类移到不同的命名空间。
添加其他支持类以使绑定的设计遵循 .NET 框架模式。<