通过硬件加速提高仿真器性能 (Hyper-V & HAXM)

本文介绍了如何使用计算机的硬件加速功能最大限度提高 Android Emulator 的性能。

Visual Studio 便于开发人员在无法使用 Android 设备的情况下通过使用 Android Emulator 来测试和调试 Xamarin.Android 应用程序。 但是,如果硬件加速在运行 Android 仿真器的计算机上不可用,那么它的运行速度太慢。 通过将特殊的 x86 虚拟设备映像与计算机的虚拟化功能结合使用,可以极大地提高 Android Emulator 的性能。

场景 HAXM WHPX Hypervisor.Framework
有 Intel 处理器 X X X
有 AMD 处理器 X
想支持 Hyper-V X
想支持嵌套虚拟化 受限
想使用 Docker 等技术 (使用 WSL2) X X

在 Windows 上加速 Android Emulator

以下虚拟化技术可用于加速 Android Emulator:

  1. Microsoft 的 Hyper-V 和 Windows 虚拟机监控程序平台 (WHPX)Hyper-V 是 Windows 的虚拟化功能,使虚拟的计算机系统可以在物理主计算机上运行。

  2. Intel 硬件加速执行管理器 (HAXM)。 HAXM 是运行 Intel CPU 的计算机所用的虚拟化引擎。

为了在 Windows 上获得最佳体验,建议使用 WHPX 来加速 Android Emulator。 如果计算机没有 Hyper-V,则可使用 HAXM。 如果满足以下条件,Android Emulator 将自动使用硬件加速:

  • 硬件加速在开发计算机上可用并已启用。

  • 仿真器正在运行为基于 x86 的虚拟设备创建的系统映像

重要

不可在另一 VM(例如由 VirtualBox、VMware 或 Docker 托管的 VM)内运行经过 VM 加速的模拟器(除非使用 WSL2)。 必须直接在系统硬件上运行 Android Emulator 。

有关使用 Android Emulator 进行启动和调试的信息,请参阅 Android Emulator 调试

使用 HYPER-V 加速

在启用 Hyper-V 之前,请阅读以下部分以验证你的计算机是否支持 Hyper-V。

验证对 Hyper-V 的支持

Hyper-V 在 Windows 虚拟机监控程序平台上运行。 若要将 Android Emulator 与 Hyper-V 配合使用,计算机必须满足以下条件才能支持 Windows 虚拟机监控程序平台:

  • 计算机硬件必须满足以下要求:

    • 支持二级地址转换 (SLAT) 的 64 位 Intel 或 AMD Ryzen CPU。
    • CPU 支持 VM 监视器模式扩展(Intel CPU 上的 VT-c)。
    • 内存至少为 4 GB。
  • 在计算机的 BIOS 中,必须启用以下项:

    • 虚拟化技术(标签可能因母板制造商而不同)。
    • 硬件强制执行数据执行保护。
  • 计算机必须更新到 Windows 10 2018 年 4 月更新(版本 1803)或更高版本。 可使用以下步骤验证 Windows 版本是否为最新版本:

    1. 在 Windows 搜索框中,输入“关于”

    2. 在搜索结果中选择“关于你的电脑”

    3. 在“关于”对话框中向下滚动到“Windows 规范”部分

    4. 验证“版本”最低为 1803 版

      Windows specifications

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

systeminfo

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

Example systeminfo output

启用 HYPER-V 加速

若计算机符合上述条件,请执行以下步骤使用 Hyper-V 加速 Android Emulator:

  1. 在 Windows 搜索框中输入“Windows 功能”,然后在搜索结果中选择“打开或关闭 Windows 功能”。 在“Windows 功能”对话框中,启用“Hyper-V”和“Windows 虚拟机监控程序平台”

    Enabling Hyper-V and Windows Hypervisor Platform

    进行这些更改后,重新启动计算机。

重要

在 Windows 10 2018 年 10 月更新(RS5) 及更高版本中,你只需启用 Hyper-V 即可,因为它将自动使用 Windows 虚拟机监控程序平台 (WHPX)。

  1. 安装 Visual Studio 15.8 或更高版本(此版本 Visual Studio 通过 Hyper-V 提供用于运行 Android Emulator 的 IDE 支持)

  2. 安装 Android Emulator 包 27.2.7 或更高版本。 若要安装此包,请导航到 Visual Studio 中的 Android Android > SDK 管理器工具>。 选择“工具”选项卡,确保 Android Emulator 版本至少为 27.2.7。 另请确保 Android SDK Tools 版本为 26.1.1 或更高版本:

    Android SDKs and Tools dialog

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

现在应启用 Hyper-V,以便可以运行加速的 Android Emulator。

使用 HAXM 加速

如果计算机不支持 Hyper-V,你可以使用 HAXM 加速 Android Emulator。 若要使用 HAXM,必须禁用 Device Guard

验证 HAXM 支持

要确定硬件是否支持 HAXM,请按照我的处理器是否支持 Intel 虚拟化技术?中的步骤操作。 若硬件支持 HAXM,可以使用以下步骤检查是否已安装 HAXM:

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

    sc query intelhaxm
    
  2. 检查输出,查看 HAXM 进程是否正在运行。 如果它正在运行,你会看到将 intelhaxm 状态列为 RUNNING 的输出。 例如:

    Output from sc query command when HAXM is available

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

如果计算机可以支持 HAXM 但未安装 HAXM,请按照下一部分中的步骤安装 HAXM。

安装 HAXM

可以从 Intel 硬件加速执行管理器 GitHub 发布页获取适用于 Windows 的 HAXM 安装包。 若要下载并安装 HAXM,请按照下列步骤操作:

  1. 从 Intel 网站下载适用于 Windows 的最新 HAXM 虚拟化引擎安装程序。 直接从 Intel 网站下载 HAXM 安装程序的优点是可以确保使用最新版本。

  2. 运行 haxm-N.N.N-setup.exe(其中 N.N.N 是版本号),启动 HAXM 安装程序。 接受安装程序对话框中的默认值:

    Intel Hardware Accelerated Execution Manager Setup window

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

疑难解答

有关解决硬件加速问题的帮助,请参阅 Android Emulator 疑难解答指南。

在 macOS 上加速 Android Emulator

以下虚拟化技术可用于加速 Android Emulator:

  1. Apple 的虚拟机监控程序框架虚拟机监控程序是 macOS 10.10 及更高版本的一项功能,可在 Mac 上运行虚拟机。

  2. Intel 硬件加速执行管理器 (HAXM)HAXM 是运行 Intel CPU 的计算机所用的虚拟化引擎。

建议使用虚拟机监控程序框架来加速 Android 仿真器。 如果 Mac 上没有虚拟机监控程序框架,则可以使用 HAXM。 如果满足以下条件,Android Emulator 将自动使用硬件加速:

  • 硬件加速在开发计算机上可用并已启用。

  • 仿真器正在运行为基于 x86 的虚拟设备创建的系统映像

重要

不可在另一 VM(例如由 VirtualBox、VMware 或 Docker 托管的 VM)内运行经过 VM 加速的模拟器。 必须直接在系统硬件上运行 Android Emulator 。

有关使用 Android Emulator 进行启动和调试的信息,请参阅 Android Emulator 调试

使用虚拟机监控程序框架加速

要将 Android Emulator 与虚拟机监控程序框架配合使用,Mac 必须符合以下条件:

  • Mac 必须运行 macOS 10.10 或更高版本。

  • Mac 的 CPU 必须能够支持虚拟机监控程序框架。

如果你的 Mac 符合这些条件,Android 仿真器将自动使用虚拟机监控程序框架进行加速。 若不确定 Mac 是否支持虚拟机监控程序框架,请参阅疑难解答指南,了解验证 Mac 是否支持虚拟机监控程序的方法。

如果 Mac 不支持虚拟机监控程序框架,可以使用 HAXM 加速 Android Emulator(如下所述)。

使用 HAXM 加速

若你的 Mac 不支持虚拟机监控程序框架(或者 macOS 版本低于 10.10),则可使用“Intel 的硬件加速执行管理器”(HAXM) 来加速 Android Emulator

在首次将 HAXM 与 Android Emulator 配合使用之前,最好先验证 HAXM 是否已安装并可供 Android Emulator 使用。

验证 HAXM 支持

可使用以下步骤检查是否已安装 HAXM:

  1. 打开终端,然后输入以下命令:

    ~/Library/Developer/Xamarin/android-sdk-macosx/tools/emulator -accel-check
    

    此命令假定将 Android SDK 安装在默认位置“~/Library/Developer/Xamarin/android-sdk-macosx”;否则,请在 Mac 上修改 Android SDK 位置的路径

  2. 若已安装 HAXM,则上面的命令将返回类似于以下结果的消息:

    HAXM version 7.2.0 (3) is installed and usable.
    

    若 HAXM 未安装,则返回类似于以下输出的消息

    HAXM is not installed on this machine (/dev/HAX is missing).
    

如果未安装 HAXM,请按照下一部分的步骤安装 HAXM。

安装 HAXM

可以从 Intel 硬件加速执行管理器页获取适用于 macOS 的 HAXM 安装包。 若要下载并安装 HAXM,请按照下列步骤操作:

  1. 从 Intel 网站下载适用于 macOS 的最新 HAXM 虚拟化引擎安装程序。

  2. 运行 HAXM 安装程序。 接受安装程序对话框中的默认值:

    Intel Hardware Accelerated Execution Manager Setup window

疑难解答

有关解决硬件加速问题的帮助,请参阅 Android Emulator 疑难解答指南。