📜  Xamarin.Android

📅  最后修改于: 2021-01-11 16:13:30             🧑  作者: Mango

Xamarin.Android

Xamarin.Android是Xamarin家族的一部分,可使用C#和Xamarin构建本机android应用。 Xamarin.Android提供了与Android Java中相同的UI控件。在继续进行之前,我们将重点介绍Java的Android体系结构和开发工具。

Android开发

Android是基于Linux内核的开源操作系统。 Android最初是由Android公司注册开发的,并由Google购买。 Android提供了丰富的应用程序框架,使我们能够在Java环境中为移动设备构建创新的应用程序和游戏。

可以使用Java作为编程语言,使用Android Studio或Eclipse开发本机Android应用程序。

Android平台架构

android操作系统是基于Linux的软件组件堆栈,可以分为五个部分,如下图所示。

Linux内核

Linux内核提供了多任务执行环境,该环境允许多个进程同时执行。 Android运行时(ART)依赖于Linux内核来实现所有功能,例如低级内存管理和线程。

硬件抽象层(HAL)

硬件抽象层(HAL)可帮助Android /应用程序框架通过更高级别的Java API与特定于硬件的设备驱动程序进行通信。 Android HAL包含用于特定类型的硬件组件(例如相机和蓝牙模块)的多个库模块。因此,当我们调用使用Java API访问硬件设备时,Android系统会加载硬件组件的库模块。

Android执行阶段

每个Android应用都基于Android 5.0或更高版本,并在其过程中以及其Android运行时(ART)实例中运行。编写ART可以在低内存设备上运行多个VMS(虚拟机)。

必须将应用程序的代码从标准Java类文件转换为Dalvik可执行文件(.dex)格式,才能在ART中执行。与Java字节码相比,已对数据进行了优化以使其内存最少(消耗的内存减少50%)。构建工具链,例如将Java源代码编译为DEX字节码,这些工具链可以在Android平台上运行。

与达尔维克相比,ART具有两个主要特征。

  • 提前(AOT)编译可提高速度并减少内存占用。
  • ART优化垃圾收集。

本机C / C++库

C / C++库提供了更广泛的功能,包括2D和3D图形绘制,安全套接字层(SSL)通信,SQLite数据库管理,诸如音频和视频播放的媒体管理,显示子系统以及图形层管理和C系统实现库(库)。

Android应用程序可以通过基于Java的Android核心库API访问这些库。同样,我们可以使用Java Native Interface(JNI)在Java代码中使用Android Native Development Kit(NDK)访问这些Native C / C++库。

Java API框架

JAVA的API框架是一组丰富的,可扩展的API,用于使用Java语言访问Android OS的整个功能集。这些API有助于与本机C / C++库进行交互,并为各种任务管理(例如活动管理,通知管理,资源管理等)构建丰富的UI。

系统应用程序和第三方应用程序

android操作系统随附了一组用于电子邮件,电话,消息,日历,互联网浏览,联系人等的系统应用程序。除了系统应用程序外,我们还可以安装第三方电子邮件,诸如Outlook,聊天,Twitter,Facebook等消息。

Xamarin.Android体系结构

Xamarin.Android应用程序在Mono执行环境中运行。 Mono运行时使用C语言编写,并在Android Runtime(ART)虚拟机中并行运行。两种运行时环境都在Linux内核之上运行,并公开了各种API以访问android系统。

Xamarin.Android应用程序可以通过调用.Net API或使用Android名称空间中公开的类(它们提供到Java API的桥梁)来访问Android操作系统的各种低级功能。这些由Android运行时提供。

托管可呼叫包装器(MCW)

诸如音频,图形,OpenGL和电话之类的Android操作系统功能无法直接用于本机应用程序。它们仅通过Android。*命名空间或Java。*命名空间中提供的Android运行时Java API公开。

因此,要在Xamarin.Android中访问这些API,需要一个托管的可调用包装程序,该包装程序充当JNI(Java本机接口)桥来调用Android代码并提供对重写虚拟方法和实现Java接口的支持。

Android Callable Wrappers(ACW)

Android Callable Wrappers是一个JNI桥,用于在我们需要Android运行时时调用托管代码。从Java创建Android Callable Wrapper(ACW)时,ACW构造函数调用了相应的C#构造函数。

Xamarin.Android开发

Xamarin.Android允许我们使用C#构建本机Android应用程序。 Xamarin.Android项目基于我们使用Android Studio或Eclipse创建的Android项目的标准结构。我们可以使用IDE进行Xamarin.Android开发-Xamarin Studio或Mac的Visual Studio以及Windows的Visual Studio。

安装与安装

在这里,我们将定义如何安装和配置Xamarin.Android,使其能够在Windows和macOS以及Visual Studio上运行。如何使用Android SDK管理器下载和安装构建和测试应用程序所需的Android SDK工具和组件,以及如何将物理Android设备连接到我们的开发计算机以调试和测试我们的应用程序。

安装

Xamarin可以作为新Visual Studio 2017的一部分安装。为此,我们必须执行以下步骤:

  • 从Visual Studio页面下载Visual Studio 2017社区,Visual Studio Professional或Visual Studio Enterprise。
  • 要开始安装,请双击下载的软件包。
  • 从安装屏幕中选择Mobile with .NET工作负载的开发。

4.选择使用.NET进行移动开发时,在这里,我们可以选择要安装的移动开发选项。

5. Visual Studio 2017安装开始时,单击右下角的按钮进行安装:

这取决于要安装的Visual Studio 2017版本,安装过程可能需要很长时间才能完成。我们可以使用进度条来监视安装。

6. Visual Studio 2017安装完成后,单击“启动”按钮以启动Visual Studio:

为Xamarin.Android设置Android SDK

Visual Studio包含一个Android SDK Manager,我们可以通过它下载Android SDK工具和开发Xamarin.Android应用程序所需的其他组件。

Xamarin。 Android SDK Manager可以帮助我们下载最新的Android组件,从而可以开发Xamarin.Android应用程序。它取代了已弃用的Google独立SDK管理器。

SDK管理器

要在Visual Studio中启动SDK Manager,请单击工具-> Android-> Android SDK Manager

“ Android SDK Manager”将在“工具”屏幕的“ Android SDK”中显示。屏幕上有两个选项卡-工具和平台

Android SDK的位置

Android SDK的位置位于屏幕截图中显示的Android SDK和工具屏幕的顶部。出于以下原因,需要设置Android SDK的位置:

  • Android SDK Manager无法找到Android SDK。
  • 我们必须在备用(非默认)位置安装Android SDK。

要设置Android SDK位置,请单击Android SDK位置右侧的省略号(…)按钮。这将打开“浏览文件夹”对话框,用于导航到Android SDK的位置。屏幕快照显示已选择“程序文件(x86)\ Android”下的Android SDK:

当我们单击OK时,SDK Manager将管理安装在该位置的Android SDK。

工具标签

“工具”选项卡显示工具和其他功能的列表。我们使用此标签来安装Android SDK工具,平台工具和构建工具。另外,我们可以安装Android模拟器,HAXM加速,低级调试器(LLDB),NDK和Google Play库。

例如:要下载Google的Android模拟器程序包,请单击Android模拟器的复选标记,然后单击“应用(更改)”按钮:

在安装以下软件包时,将显示一个对话框,并显示以下消息,要求我们接受其许可条款:

如果我们同意条款和条件,请单击接受。在窗口底部,进度条指示下载和安装的进度。安装完成后,“工具”选项卡将显示已安装所选工具和其他功能。

平台标签

“平台”选项卡显示了每个平台的SDK版本以及其他资源(例如系统映像)的列表:

该屏幕显示了Android的版本(例如Android 8.0 ),代号( Oreo ),API级别(例如26)以及该平台的组件大小(例如1 GB)。我们使用“平台”标签为我们要定位的Android API级别安装组件。

安装平台的所有组件后,平台名称旁边会出现一个选中标记。如果未安装平台的所有组件,则将填充该平台的框。我们可以通过单击平台左侧的+框来扩展平台以查看其组件(以及已安装的组件)。单击-关闭平台的组件列表。

要将另一个平台添加到SDK,请单击该平台旁边的框,直到出现选中标记以安装其所有组件,然后单击Apply Changes

要仅安装特定组件,请单击平台旁边的框。然后,我们可以选择所需的任何单个组件:

注意:要安装的组件数量出现在“应用更改”按钮旁边。单击“应用更改”按钮后,我们将看到“许可证接受”屏幕,如前所示。如果我们接受条款和条件,请单击接受。当要安装多个组件时,我们会多次看到此对话框。在底部,进度条将指示下载和安装的进度。下载和安装过程完成后(这可能需要花费几分钟,具体取决于需要下载多少个组件)。添加的组件带有选中标记,并显示为已安装。

储存库选择

默认情况下,Android SDK Manager从Microsoft托管的存储库下载平台组件和工具。如果需要访问Microsoft存储库中不可用的alpha / beta平台和工具。我们可以将SDK Manager切换为使用Google的存储库。要进行此切换,请点击右下角的齿轮图标,然后选择存储库> Google(不受支持)

当我们选择Google存储库时,其他软件包可能会显示在“平台”标签中,而以前的软件包不可用。在这里,我们必须注意,不支持使用Google存储库,不建议将其用于日常开发。

要移回到受支持的平台和工具存储库,我们将单击Microsoft(推荐) 。这会将软件包和工具列表恢复为默认选择。

Android模拟器设置

在这里,我们将说明如何准备Android模拟器来测试该应用。

Android Emulator可以多种配置运行,以模拟不同的设备。每种配置都称为虚拟设备。当我们在模拟器中部署和测试应用程序时,我们将选择一个预配置或自定义的虚拟设备,该设备可模拟Nexus或Pixel手机等物理Android设备。

硬件加速以提高仿真器性能(Hyper V和HAXM)

在这里,我们将学习如何使用计算机的硬件加速功能来最大化Android模拟器的性能。

在Android设备不可用的情况下,Visual Studio易于开发人员使用Android模拟器测试和调试Xamarin.Android应用程序。但是,如果计算机上没有硬件加速,则Android模拟器运行缓慢。通过结合使用特定的x86虚拟设备映像和计算机的虚拟化功能,我们可以提高Android仿真器的性能。

在Windows上加速Android模拟器

这里是可用于加速Android模拟器的虚拟化技术。

  • Windows Hypervisor平台(WHPX)和Microsoft的Hyper-V: Hyper-V是window的虚拟化功能,这使得可以在物理主机上运行虚拟化的计算机系统。
  • 英特尔的硬件加速执行管理器(HAXM): HAXM是用于运行计算机Intel CPU的虚拟化引擎。

在Windows上,我们使用HAXM来加速Android仿真器。如果我们的计算机上没有HAXM,则可以使用Windows Hypervisor平台(WHPX)。

如果满足以下条件,Android Emulator将自动使用硬件加速:

  • 硬件加速是可用的,并且已在我们的计算机系统上启用。
  • 模拟器正在运行基于虚拟设备为x-86-创建的系统映像。

通过Hyper-V加速

Hyper-V是加速Android模拟器的选择。在启用Hyper-V之前,首先,我们必须验证系统是否满足支持Windows Hypervisor平台的条件。

验证对Hyper-V的支持

Hyper-V在Windows Hypervisor平台上运行。要将Android模拟器与Hyper-V一起使用,计算机必须满足以下条件才能支持Windows Hypervisor平台:

  • 该计算机必须满足以下要求:
    • 具有二级地址转换(SLAT)的64位Intel或AMD Ryzen CPU。
    • VM监视器模式扩展(Intel CPU上的VT-c)的CPU支持。
    • 至少4 GB的内存。
  • 在计算机的BIOS中,必须启用以下各项:
    • 虚拟化技术(此标签取决于主板制造商)。
    • 硬件强制数据执行保护。
  • 我们的计算机必须更新为Windows 10 April 2018更新(内部版本1803)或更高版本。通过使用以下步骤,我们可以验证我们的Windows版本是否为最新版本:
    1. 在Windows搜索框中输入“关于”。
    2. 在搜索结果中选择我们电脑的“关于”。
    3. 在Windows规格部分的“关于”对话框中向下滚动。
    4. 验证版本至少为1803:

要验证我们的计算机硬件和软件是否与Hyper-V兼容,请打开命令提示符,然后键入以下命令:

CMD
SYSTEMINFO

如果列出的所有Hyper-V要求的值都是Yes ,则计算机可以支持Hyper-V。例如:

启用Hyper-V加速

如果计算机满足上述条件,我们将按照以下步骤使用Hyper-V激活Android仿真器:

1.在搜索框中输入Windows功能,然后在搜索结果中选择Windows功能的开或关。在“ Windows功能”对话框中,启用Hyper-V和Windows Hypervisor平台:

  • 进行这些更改后,重新启动计算机。
  • 安装Visual Studio 15.8或更高版本(此版本的Visual Studio提供了对通过Hyper-V运行Android模拟器的支持)。
  • 安装Android Emulator软件包27.2.7或更高版本。要安装此软件包,我们将在Visual Studio中导航至“工具”>“ Android”>“ Android SDK Manager”。选择工具选项卡,并确保Android仿真器版本至少为27.2.7。另外,请确保Android SDK Tools版本为26.1.1或更高版本:

创建虚拟设备时(请参阅使用Android设备管理器管理虚拟设备),请确保选择基于x86的系统映像。如果我们使用基于ARM的系统映像,则虚拟设备将不会加速并且将运行缓慢。

使用HAXM加速

要确定我们的硬件是否支持HAXM,我们必须执行以下步骤:我的处理器是否支持英特尔虚拟化技术?如果设备支持HAXM,我们可以使用以下命令检查是否已安装HAXM:

1.打开命令提示符窗口,然后输入以下命令:

cmd
sc query intelhaxm

2.我们将检查输出以查看HAXM进程是否正在运行。如果是这样,我们应该看到输出清单intelhaxm状态为RUNNING。例如:

1.如果STATE未设置为RUNNING,则未安装HAXM。

如果计算机支持HAXM,但未安装HAXM,则我们将在下一部分中使用以下步骤安装HAXM。

安装HAXM

HAXM安装Windows的软件包,这些软件包可从“英特尔硬件加速执行管理器”页面获得。要下载并安装HAXM,我们使用以下步骤:

  • 从Windows的intel网站,我们下载了最新的HAXM虚拟化引擎安装程序。直接从英特尔网站下载HAXM安装程序的好处是,我们可以保证使用的是最新版本。
  • 运行intelhaxm-android.exe以启动HAXM安装程序。在安装程序对话框中接受默认值:

创建虚拟映像时,请确保选择基于x86的系统映像。如果我们使用基于ARM的系统映像,则虚拟设备将不会加速并且将运行缓慢。

使用Android设备管理器管理虚拟设备

在这里,我们将介绍如何使用Android设备管理器创建和配置Android虚拟设备。我们可以使用这些虚拟设备来运行和测试我们的应用程序,而无需依赖于物理设备。

启用硬件加速后,下一步是使用Android设备管理器创建虚拟设备,我们可以使用这些虚拟设备来测试和调试该应用。

Windows上的Android设备管理器

在这里,我们将说明如何使用Android设备管理器来创建,自定义和启动Android虚拟设备。

我们使用Android设备管理器来创建和配置在Android模拟器中运行的Android虚拟设备(AVD)。每个AVD是仿真器的配置,它可以仿真物理Android设备。

要求

要使用Android设备管理器,我们需要以下各项:

  • Visual Studio 2019社区,专业和企业版。
  • 或者,我们可以使用Visual Studio 2017 15.8版或更高版本。支持Visual Studio社区,企业版和专业版。
  • Visual Studio工具用于Xamarin 4.9版。
  • 必须安装Android SDK(使用此设置Xamarin.Android的Android SDK)。如果尚未安装Android SDK,我们必须确保将其安装在以下位置: C:\ Program Files(x86)\ Android \ android-SDK

必须安装以下软件包(通过Android SDK Manager)

  • Android SDK工具版本26.1.1或更高版本
  • Android SDK平台工具27.0.1或更高版本
  • Android SDK Build-Tools 27.0.3或更高版本
  • Android Emulator 27.2.7或更高版本。

这些软件包应显示为已安装状态,如以下屏幕快照所示:

启动设备管理器

我们将通过点击工具-> Android-> Android设备管理器从工具启动Android设备管理器。

主屏幕

当我们启动Android设备管理器时,它将显示一个屏幕,其中显示了所有配置虚拟设备。对于每个虚拟设备,将显示OS(Android版本),名称,内存大小,处理器和屏幕分辨率

当我们在列表中选择设备时,“开始”按钮将出现在右侧。我们可以单击开始按钮以使用该虚拟设备启动仿真器:

当模拟器以选定的虚拟设备启动时,“开始”按钮将变为“停止” ,我们可以使用它来停止模拟器。

新装置

要创建新设备,请单击“新建”按钮

单击“新建”以启动“新设备”屏幕。

要在“新设备”屏幕中安排新设备,请使用以下步骤:

1.在这里,我们必须给设备起个名字。在此示例中,将创建一个名为Android1的新设备。

2.通过单击基本设备,然后单击菜单,选择要仿真的物理设备。

3.现在,我们将通过单击虚拟机处理器的菜单来为其选择处理器的类型。现在,我们选择提供最佳性能的x86 ,因为它可以实现硬件加速x86_64选项还利用了硬件加速,但运行速度略慢于x86

4.单击菜单中的OS ,选择Android版本。例如,选择Oreo 8.1-API 27为API级别27创建虚拟设备:

如果我们选择尚未安装的Android API级别,则设备管理器将在屏幕底部显示该消息。将下载一个新设备-在创建新虚拟设备时将下载并安装必要的文件:

如果我们想在我们的虚拟设备中包括Google Play服务API,请启用Google API选项。要包括Google Play商店应用,我们将启用Google Play商店选项:

请注意,Google Play商店的图像仅适用于某些基本设备类型,例如Pixel,Pixel 2,Nexus 5和Nexus 5X。

6.编辑我们需要修改的所有属性。

7.添加我们需要显式设置的任何其他属性。 “新设备”屏幕仅显示最常修改的属性,但是我们可以单击“添加属性”下拉菜单(位于底部)以添加其他属性:

我们还可以通过选择属性列表顶部的custom选项来定义一个定制属性。

8.单击创建按钮创建一个新设备。

9.我们可能会看到“许可证接受”屏幕。单击接受。

10. Android设备管理器将新设备添加到已安装虚拟设备的列表中,同时在设备创建过程中显示“创建进度”指示器:

11.创建过程完成后,带有“开始”按钮的已安装虚拟设备列表中将显示一个新设备。