我们已经介绍了如何通过 .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 原⽣库绑定项⽬d
otnet 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