📅  最后修改于: 2021-01-11 16:13:30             🧑  作者: Mango
Xamarin.Android是Xamarin家族的一部分,可使用C#和Xamarin构建本机android应用。 Xamarin.Android提供了与Android Java中相同的UI控件。在继续进行之前,我们将重点介绍Java的Android体系结构和开发工具。
Android是基于Linux内核的开源操作系统。 Android最初是由Android公司注册开发的,并由Google购买。 Android提供了丰富的应用程序框架,使我们能够在Java环境中为移动设备构建创新的应用程序和游戏。
可以使用Java作为编程语言,使用Android Studio或Eclipse开发本机Android应用程序。
android操作系统是基于Linux的软件组件堆栈,可以分为五个部分,如下图所示。
Linux内核提供了多任务执行环境,该环境允许多个进程同时执行。 Android运行时(ART)依赖于Linux内核来实现所有功能,例如低级内存管理和线程。
硬件抽象层(HAL)可帮助Android /应用程序框架通过更高级别的Java API与特定于硬件的设备驱动程序进行通信。 Android HAL包含用于特定类型的硬件组件(例如相机和蓝牙模块)的多个库模块。因此,当我们调用使用Java API访问硬件设备时,Android系统会加载硬件组件的库模块。
每个Android应用都基于Android 5.0或更高版本,并在其过程中以及其Android运行时(ART)实例中运行。编写ART可以在低内存设备上运行多个VMS(虚拟机)。
必须将应用程序的代码从标准Java类文件转换为Dalvik可执行文件(.dex)格式,才能在ART中执行。与Java字节码相比,已对数据进行了优化以使其内存最少(消耗的内存减少50%)。构建工具链,例如将Java源代码编译为DEX字节码,这些工具链可以在Android平台上运行。
与达尔维克相比,ART具有两个主要特征。
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框架是一组丰富的,可扩展的API,用于使用Java语言访问Android OS的整个功能集。这些API有助于与本机C / C++库进行交互,并为各种任务管理(例如活动管理,通知管理,资源管理等)构建丰富的UI。
android操作系统随附了一组用于电子邮件,电话,消息,日历,互联网浏览,联系人等的系统应用程序。除了系统应用程序外,我们还可以安装第三方电子邮件,诸如Outlook,聊天,Twitter,Facebook等消息。
Xamarin.Android应用程序在Mono执行环境中运行。 Mono运行时使用C语言编写,并在Android Runtime(ART)虚拟机中并行运行。两种运行时环境都在Linux内核之上运行,并公开了各种API以访问android系统。
Xamarin.Android应用程序可以通过调用.Net API或使用Android名称空间中公开的类(它们提供到Java API的桥梁)来访问Android操作系统的各种低级功能。这些由Android运行时提供。
诸如音频,图形,OpenGL和电话之类的Android操作系统功能无法直接用于本机应用程序。它们仅通过Android。*命名空间或Java。*命名空间中提供的Android运行时Java API公开。
因此,要在Xamarin.Android中访问这些API,需要一个托管的可调用包装程序,该包装程序充当JNI(Java本机接口)桥来调用Android代码并提供对重写虚拟方法和实现Java接口的支持。
Android Callable Wrappers是一个JNI桥,用于在我们需要Android运行时时调用托管代码。从Java创建Android Callable Wrapper(ACW)时,ACW构造函数调用了相应的C#构造函数。
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的一部分安装。为此,我们必须执行以下步骤:
4.选择使用.NET进行移动开发时,在这里,我们可以选择要安装的移动开发选项。
5. Visual Studio 2017安装开始时,单击右下角的按钮进行安装:
这取决于要安装的Visual Studio 2017版本,安装过程可能需要很长时间才能完成。我们可以使用进度条来监视安装。
6. Visual Studio 2017安装完成后,单击“启动”按钮以启动Visual Studio:
Visual Studio包含一个Android SDK Manager,我们可以通过它下载Android SDK工具和开发Xamarin.Android应用程序所需的其他组件。
Xamarin。 Android SDK Manager可以帮助我们下载最新的Android组件,从而可以开发Xamarin.Android应用程序。它取代了已弃用的Google独立SDK管理器。
要在Visual Studio中启动SDK Manager,请单击工具-> Android-> Android SDK Manager 。
“ Android SDK Manager”将在“工具”屏幕的“ Android SDK”中显示。屏幕上有两个选项卡-工具和平台。
Android SDK的位置位于屏幕截图中显示的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 Emulator可以多种配置运行,以模拟不同的设备。每种配置都称为虚拟设备。当我们在模拟器中部署和测试应用程序时,我们将选择一个预配置或自定义的虚拟设备,该设备可模拟Nexus或Pixel手机等物理Android设备。
硬件加速以提高仿真器性能(Hyper V和HAXM)
在这里,我们将学习如何使用计算机的硬件加速功能来最大化Android模拟器的性能。
在Android设备不可用的情况下,Visual Studio易于开发人员使用Android模拟器测试和调试Xamarin.Android应用程序。但是,如果计算机上没有硬件加速,则Android模拟器运行缓慢。通过结合使用特定的x86虚拟设备映像和计算机的虚拟化功能,我们可以提高Android仿真器的性能。
在Windows上加速Android模拟器
这里是可用于加速Android模拟器的虚拟化技术。
在Windows上,我们使用HAXM来加速Android仿真器。如果我们的计算机上没有HAXM,则可以使用Windows Hypervisor平台(WHPX)。
如果满足以下条件,Android Emulator将自动使用硬件加速:
通过Hyper-V加速
Hyper-V是加速Android模拟器的选择。在启用Hyper-V之前,首先,我们必须验证系统是否满足支持Windows Hypervisor平台的条件。
验证对Hyper-V的支持
Hyper-V在Windows Hypervisor平台上运行。要将Android模拟器与Hyper-V一起使用,计算机必须满足以下条件才能支持Windows Hypervisor平台:
要验证我们的计算机硬件和软件是否与Hyper-V兼容,请打开命令提示符,然后键入以下命令:
CMD
SYSTEMINFO
如果列出的所有Hyper-V要求的值都是Yes ,则计算机可以支持Hyper-V。例如:
启用Hyper-V加速
如果计算机满足上述条件,我们将按照以下步骤使用Hyper-V激活Android仿真器:
1.在搜索框中输入Windows功能,然后在搜索结果中选择Windows功能的开或关。在“ Windows功能”对话框中,启用Hyper-V和Windows Hypervisor平台:
创建虚拟设备时(请参阅使用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,我们使用以下步骤:
创建虚拟映像时,请确保选择基于x86的系统映像。如果我们使用基于ARM的系统映像,则虚拟设备将不会加速并且将运行缓慢。
在这里,我们将介绍如何使用Android设备管理器创建和配置Android虚拟设备。我们可以使用这些虚拟设备来运行和测试我们的应用程序,而无需依赖于物理设备。
启用硬件加速后,下一步是使用Android设备管理器创建虚拟设备,我们可以使用这些虚拟设备来测试和调试该应用。
在这里,我们将说明如何使用Android设备管理器来创建,自定义和启动Android虚拟设备。
我们使用Android设备管理器来创建和配置在Android模拟器中运行的Android虚拟设备(AVD)。每个AVD是仿真器的配置,它可以仿真物理Android设备。
要使用Android设备管理器,我们需要以下各项:
必须安装以下软件包(通过Android SDK Manager)
这些软件包应显示为已安装状态,如以下屏幕快照所示:
我们将通过点击工具-> 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.创建过程完成后,带有“开始”按钮的已安装虚拟设备列表中将显示一个新设备。