如何使用 Android 模拟器(Hyper-V 和 AEHD)启用硬件加速

使用 Visual Studio,你可以在仿真器中轻松测试和调试面向 Android 的 .NET MAUI 应用,以应对没有 Android 设备的情况。 但是,如果硬件加速不可用或未启用,仿真器的运行速度会非常缓慢。 通过启用硬件加速并使用适用于处理器体系结构的虚拟设备映像,可以显著提高模拟器的性能。 有关详细信息,请参阅 developer.android.com 上的“为 Android Emulator 配置硬件加速”。

该模拟器会提供通用的网络功能,以用于不同的目的,包括从 Windows 虚拟机 (VM) 连接到 Mac 上运行的模拟器。 有关详细信息,请参阅“从 Windows 虚拟机连接到 Mac 上的 Android 模拟器”。

在 macOS 上,Android 模拟器使用内置的 Hypervisor.Framework。 有关详细信息,请参阅 developer.apple.com 上的“虚拟机监控程序”。

在 Windows 上加速运行 Android Emulator

以下虚拟化技术可用于加速 Windows 上的 Android 模拟器:

  • Windows 虚拟机监控程序平台 (WHPX) Hyper-V 是 Windows 的虚拟化功能,使虚拟的计算机系统可以在物理主计算机上运行。
  • Android Emulator 虚拟机监控程序驱动 (AEHD)。

注意

从 Emulator 33.x.x.x 版本起,Intel 硬件加速执行管理器 (HAXM) 已经弃用,并且已由 Intel 处理器上的 AEHD 取代。 有关在 Emulator 32.x.x.x.x 和更低版本上使用 HAXM 的信息,请参阅 developer.android.com 上的在 Windows 上使用 Intel HAXM 配置 VM 加速

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

  • 硬件加速在开发计算机上可用并已启用。
  • 仿真器正运行为基于 x86-64 或 x86 的虚拟设备创建的系统映像。

重要

如果 VM 中启用了嵌套虚拟化,虚拟机 (VM) 加速模拟器可以在另一个 VM 中运行,包括 Microsoft Dev Box。

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

使用 Hyper-V 加速

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

验证对 Hyper-V 的支持

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

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

    • 支持虚拟化技术 (VT-x)、扩展页表 (EPT) 和不受限制的来宾 (UG) 功能的 Intel 处理器。 必须在计算机的 BIOS 中启用 VT-x。
    • AMD 处理器:建议使用 AMD Ryzen 处理器。 必须在计算机的 BIOS 中启用虚拟化或 SVM。
  • 你的计算机运行的操作系统必须是企业版、专业版或教育版的 Windows 11 或 Windows 10(版本 1909 或更高版本)。

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

systeminfo

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

检查对 .NET MAUI 的 Hyper-V 支持时的 systeminfo 输出示例。

如果 Hyper-V 结果显示虚拟机监控程序当前正在运行,则表示 Hyper-V 已经启用。

重要

如果 Windows 在虚拟机内部运行,则必须在主机虚拟机监控程序中启用嵌套虚拟化。

在 Windows 中启用 Hyper-V 加速

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

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

    为 .NET MAUI 启用 Hyper-V 和 Windows 虚拟机监控程序平台。

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

    重要

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

  2. 请确保在 Android 设备管理器中创建的虚拟设备是基于 x86-64 或基于 x86 的系统映像。 如果使用基于 ARM 的系统映像,虚拟设备将无法加速并且运行缓慢。

启用 Hyper-V 后,你就可以运行加速的 Android Emulator。

使用 AEHD 加速

如果计算机不支持 Hyper-V,则应当使用 AEHD 加速 Android 模拟器。 在安装和使用 AEHD 之前,请阅读以下部分,以验证计算机是否支持 AEHD。

验证对 AEHD 的支持

计算机必须满足以下条件才能支持 AEHD:

  • 具有虚拟化扩展的 Intel 或 AMD 处理器,必须在 BIOS 中将其启用。
  • 64 位 Windows 11 或 Windows 10。
  • 必须关闭 Hyper-V。

注意

Windows 中的多项功能隐式启用 Hyper-V。 有关详细信息,请参阅 developer.android.com 上的禁用 Hyper-V 时复查

在 Windows 中启用 AEHD 加速

若计算机符合上述条件,请执行以下步骤,使用 AEHD 加速 Android 模拟器:

  1. 在 Visual Studio 中,选择“工具”>“Android”>“Android SDK 管理器...”菜单项。

  2. 在“Android SDK 和工具”窗口中,选择“工具”选项卡。

  3. 在“工具”选项卡中,展开“附加”项,勾选“Android Emulator 虚拟机监控程序驱动程序 (安装程序)”项的复选框,然后选择“应用更改””按钮:

    通过 Visual Studio 中的 Android SDK 管理器安装 AEHD。

    注意

    或者,可以从 GitHub 下载并安装 AEHD。 解压缩驱动程序包后,使用管理员权限在命令行中运行 silent_install.bat

  4. 请确保在 Android 设备管理器中创建的虚拟设备是基于 x86-64 或基于 x86 的系统映像。 如果使用基于 ARM 的系统映像,虚拟设备将无法加速并且运行缓慢。

AEHD 2.1 及更高版本

安装后,使用以下命令确认驱动程序正常运行:

sc query aehd

如果驱动程序正常运行,状态消息将包含以下信息:

SERVICE_NAME: aehd
       ...
       STATE              : 4  RUNNING
       ...

以下错误消息表示未在 BIOS 中启用虚拟化扩展,或者未禁用 Hyper-V:

SERVICE_NAME: aehd
       ...
       STATE              : 1  STOPPED
       WIN32_EXIT_CODE    : 4294967201 (0xffffffa1)
       ...

安装并运行 AEHD 后,将能够运行加速的 Android 模拟器。

AEHD 2.0 及更低版本

安装后,使用以下命令确认驱动程序正常运行:

sc query gvm

如果驱动程序正常运行,状态消息将包含以下信息:

SERVICE_NAME: gvm
       ...
       STATE              : 4  RUNNING
       ...

以下错误消息表示未在 BIOS 中启用虚拟化扩展,或者未禁用 Hyper-V:

SERVICE_NAME: gvm
       ...
       STATE              : 1  STOPPED
       WIN32_EXIT_CODE    : 4294967201 (0xffffffa1)
       ...

安装并运行 AEHD 后,将能够运行加速的 Android 模拟器。

卸载 AEHD

若要卸载 AEHD,请在具有管理员权限的命令行中使用以下命令:

  • AEHD 2.1 及更高版本

    sc stop aehd
    sc delete aehd
    
  • AEHD 2.0 及更低版本

    sc stop gvm
    sc delete gvm
    

重要

在卸载适用于 AMD 的 AEHD 之前关闭任何 x86 模拟器。

疑难解答

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