Java 与 Xamarin.Android 集成

Java 生态系统包括一个多样化且庞大的组件集合。 其中许多组件可用于减少开发 Android 应用程序所需的时间。 本文档将介绍开发人员可以使用这些现有 Java 组件改进其 Xamarin.Android 应用程序开发体验的一些方法,并提供简要概述。

概述

鉴于 Java 生态系统的范围,Xamarin.Android 应用程序所需的任何给定功能很可能都已在 Java 中编码。 因此,在创建 Xamarin.Android 应用程序时尝试重用这些现有库很有吸引力。

在 Xamarin.Android 应用程序中重复使用 Java 库有三种可能的方法:

  • 创建 Java 绑定库 - 使用此技术,Xamarin.Android 项目用于围绕 Java 类型创建 C# 包装器。 然后,Xamarin.Android 应用程序可以引用此项目创建的 C# 包装器,然后使用 .jar 文件。

  • Java Native InterfaceJava NativeInterface (JNI) 是一个框架,它允许非 Java 代码 ((如 C++ 或 C#) )调用或在 JVM 中运行的 Java 代码调用。

  • 移植代码 – 此方法涉及获取 Java 源代码,然后将其转换为 C#。 这可以手动完成,也可以使用自动化工具(如 Sharpen)来完成。

前两种技术的核心是 Java 本机接口 (JNI) 。 JNI 是一个框架,它允许未使用 Java 编写的应用程序与 Java 虚拟机中运行的 Java 代码进行交互。 Xamarin.Android 使用 JNI 为 C# 代码创建 绑定

第一种方法是一种更自动化的声明性方法来绑定 Java 库。 它涉及使用 Visual Studio for Mac 或由 Xamarin.Android 提供的 Visual Studio 项目类型 ( Java 绑定库)。 若要成功创建这些绑定,Java 绑定库可能仍需要一些手动修改,但不像纯 JNI 方法那样多。 有关 Java 绑定库的详细信息, 请参阅绑定 Java 库。

第二种技术(使用 JNI)在较低级别工作,但可以提供更精细的控制和访问 Java 方法,而通常无法通过 Java 绑定库访问这些方法。

第三种方法与前两种方法完全不同:将代码从 Java 移植到 C#。 将代码从一种语言移植到另一种语言可能是一个非常费力的过程,但借助名为 Sharpen 的工具可以减少这种工作量。 Sharpen 是一种开放源代码工具,它是 Java 到 C# 转换器。

总结

本文档简要概述了 Java 中的库可在 Xamarin.Android 应用程序中重复使用的一些不同方法。 它介绍了绑定和托管可调用包装的概念,并讨论了将 Java 代码移植到 C# 的选项。