Visual Studio 2022 .Net下Xamarin 开发安卓应用使用Java库
千呼万唤的Visual Studio 2022 终于发布正式版了,
但我这里最关心的MAUI还是Preview版本,并没有跟正式版发布。
因为手头上有个项目是.Net的Winform应用,为了节省成本希望移植到Android系统上,团队中暂时无Android开发,所以寄希望于.Net 6下的MAUI,希望让.Net开发无缝开发安卓应用。
没有MAUI,Xamarin也可以先尝试一下。
启动Visual Studio 2022的新建项目首页上,可以找到相关移动项目的模板
移动项目创建后,会出现4个项目:1个C#的Xaml语言的UI公用库,3个分别是面向Android,iOS、Windows的应用启动入口。可以做到一套C#的UI逻辑编译到不同的平台上使用。
遇到的第一个困难就是,项目中有一个人脸识别SDK的库,在安卓版本中提供的是Java入口,并没有像Windows版本一样提供C++库和C#Demo。
微软提供了多种Java移植到C#上来使用的方法,本文例子是:利用绑定Java库的方式,从 Android .JAR 文件创建 Xamarin.Android Java
1.创建绑定库
在上面项目工程上,添加新工程,模板是Xamarin的Android绑定库
创建好的项目包含一个Jars多文件夹,右键点击jars文件夹->添加->现有项,通过浏览找到要添加的jar文件。
添加的库文件,也有可选的嵌入方式, 为了部署方便选择EmbeddedJar
EmbeddedJar - JAR将嵌入绑定库
InputJar - JAR将于绑定库分离
编译工程后就变成了 JavaArcFace.dll
2.使用绑定库
若要在 Xamarin.Android 应用中使用此 .DLL,请执行以下操作:
- 添加对绑定库的引用。
在目标项目上,右键->添加引用->选择文件 JavaArcFace.dll。此时在引用列表中看到和C#一样被使用的文件,双击打开对象浏览器,就看到了被重新引入的Java类和方法文件。不仅仅类和属性被引用,而且根据.Net规范进行了相应的映射。
-
Java 中的“Setter/Getter 方法”是 .NET 中的“属性”。
-
Java 中的“字段”是 .NET 中的“属性”。
-
Java 中的“侦听器/侦听器接口”是 .NET 中的“事件”。 回调接口中的方法的参数将由
EventArgs
子类表示。 -
Java 中的“静态嵌套类”是 .NET 中的“嵌套类”。
-
Java 中的“内部类”是 C# 中包含实例构造函数的“嵌套类”。
-
- 通过托管的可调用包装器对 .JAR 进行调用。C#的调用就和使用普通.Net类库一样的方式了
- 点赞
- 收藏
- 关注作者
评论(0)