配置 Android 模拟器的硬件加速

如果模拟器能够使用您的机器硬件(例如 CPU、GPU 和调制解调器),而不是纯粹以软件形式运行,它的性能会最佳。利用机器硬件提升性能的能力称为硬件加速

模拟器可以通过两种主要方式使用硬件加速来改善您的体验

  • 图形加速,用于改进屏幕渲染
  • 虚拟机 (VM) 加速,用于提高执行速度

硬件加速在大多数机器上默认启用。如果您的机器上未启用硬件加速,本页将介绍如何配置图形和虚拟机 (VM) 加速,以从模拟器获得更高的性能。

配置图形加速

Android 设备使用 OpenGL for Embedded Systems (OpenGL ES 或 GLES) 和 Vulkan API 在屏幕上渲染图形。图形加速允许使用您计算机的硬件(通常是 GPU)来加快渲染速度。虽然建议使用硬件加速以获得更好的性能,但如果您的计算机因图形驱动程序支持或缺少系统映像要求而不兼容,则可能需要使用软件模式。

在 AVD 管理器中创建 Android 虚拟设备 (AVD) 时,您可以指定模拟器是使用硬件渲染还是软件渲染。在自动模式下,模拟器会根据您的计算机决定是使用硬件还是软件图形加速。如果您从命令行启动模拟器,也可以覆盖此设置。

在 AVD 管理器中配置图形加速

要为 AVD 配置图形加速,请按以下步骤操作

  1. 打开设备管理器
  2. 创建新的 AVD编辑现有 AVD
  3. 配置窗口中,在附加设置标签页下找到模拟性能部分。
  4. 图形加速选项选择一个值。
  5. 点击完成

从命令行配置图形加速

要从命令行运行 AVD 时指定图形加速类型,请包含 -gpu 选项,如以下示例所示

emulator -avd avd_name -gpu mode [{-option [value]} ... ]

mode 的值可以设置为以下选项之一

  • auto:让模拟器根据 AVD、计算机设置和质量指标选择硬件或软件图形加速。
  • host:使用计算机上的 GPU 进行硬件加速。此选项通常为模拟器提供最高的图形质量和性能,并且可以在 macOS 上启用 MoltenVK 以加速 Vulkan 渲染。但是,如果您在使用图形仿真时遇到问题,可能需要切换到软件渲染。
  • swiftshader_indirect:使用与快速启动兼容的 SwiftShader 变体,通过软件加速渲染图形。如果您的计算机无法使用硬件加速,此选项是 host 模式的良好替代方案。

以下 mode 选项已弃用

  • swiftshader:在版本 27.0.2 中已弃用。请改用 swiftshader_indirect
  • angle:在版本 27.0.2 中已弃用。请改用 swiftshader_indirect
  • mesa:在版本 25.3 中已弃用。请改用 swiftshader_indirect
  • guest:对于 API 级别 28 及更高版本已弃用。请改用 swiftshader_indirect
  • angle_indirect:在版本 34.2.14 中已弃用。请改用 swiftshader_indirect

配置 VM 加速

VM 加速利用计算机的处理器显著提高模拟器的执行速度。一种称为虚拟机监控程序的工具利用您计算机处理器提供的虚拟化扩展来管理这种交互。本节概述了使用 VM 加速的要求,并描述了如何在每个操作系统上设置 VM 加速。

一般要求

要将 VM 加速与模拟器一起使用,您的计算机必须满足本节中的一般要求。您的计算机还需要满足特定于您操作系统的其他要求。

开发环境要求

要使用 VM 加速,您的开发环境必须满足以下要求

  • SDK Tools:最低版本 17;推荐版本 26.1.1 或更高版本
  • AVD:所需的 Android 版本在下表中描述。

    CPU 架构 系统映像要求
    X86_64 适用于 Android 2.3.3(API 级别 10)及更高版本的 x86 或 x86_64 系统映像
    ARM64 适用于 Android 5.0(API 级别 21)及更高版本的 arm64-v8a 系统映像

虚拟化扩展要求

除了开发环境要求外,您计算机的处理器还必须支持虚拟化扩展。支持的处理器包括

  • 支持 Intel 虚拟化技术(VT-x、vmx)的 Intel 处理器,例如 Intel Core iX 和 Intel Core Ultra 处理器
  • 支持 AMD-V (SVM) 的 AMD 处理器,例如 AMD Ryzen 处理器
  • Apple 芯片

Intel 和 AMD 处理器的其他要求

Intel 和 AMD 处理器需要二级地址转换(Intel EPT 或 AMD RVI)。大多数现代 Intel 和 AMD 处理器都支持二级地址转换。只有第一代提供虚拟化扩展的 Intel 或 AMD 处理器可能没有二级页表转换。

如果您不确定您的处理器是否支持所需的扩展,请在制造商网站上查看您的处理器规格。如果您的处理器不支持这些扩展,则无法使用 VM 加速。

限制

VM 加速有以下限制

  • 您不能在另一个 VM(例如由 VirtualBox、VMWare 或 Docker 托管的 VM)中运行 VM 加速的模拟器。您必须直接在主机计算机上运行 VM 加速的模拟器。
  • 根据您的操作系统和虚拟机监控程序,您可能无法在运行 VM 加速模拟器的同时运行使用其他虚拟化技术的软件。此类软件的示例包括但不限于虚拟机解决方案、某些防病毒程序和少数反作弊解决方案。这种情况主要出现在 Hyper-V 关闭的 Windows 系统上。大多数此类软件可以与 Android 模拟器共存而不会出现任何问题。但当发生冲突时,建议不要与此类软件同时运行 VM 加速模拟器。

关于虚拟机监控程序

VM 加速需要一个虚拟机监控程序,它是一个使用您计算机处理器提供的虚拟化扩展的工具。

如果没有虚拟机监控程序和 VM 加速,模拟器必须逐块转换来自 VM 的机器代码,以符合主机计算机的架构。这个过程可能相当缓慢。有了虚拟机监控程序,当 VM 和主机计算机的架构匹配时,模拟器可以使用虚拟机监控程序直接在主机处理器上运行代码。这种改进大大提高了模拟器的速度和性能。

最适合您的虚拟机监控程序取决于您计算机的操作系统和配置。有关更多信息,请参阅以下部分之一

检查是否已安装虚拟机监控程序

您可以使用模拟器 -accel-check 命令行选项来检查您的计算机上是否已安装虚拟机监控程序。

以下示例展示了如何使用模拟器 accel-check 选项。在每个示例中,Sdk 是 Android SDK 的位置

Windows

c:\Users\janedoe\AppData\Local\Android> Sdk\emulator\emulator -accel-check
accel:
0
WHPX(10.0.22631) is installed and usable.
accel
Windows 上有多种虚拟机监控程序可供选择。因此,您看到的内容可能与此处示例不同。例如,您可能会在消息中看到以下关键字之一:AEHDGVM(AEHD 的曾用名)。

macOS

janedoe-macbookpro:Android janedoe$ ./Sdk/emulator/emulator -accel-check
accel:
0
Hypervisor.Framework OS X Version 13.2
accel

Linux

janedoe:~/Android$ ./Sdk/emulator/emulator -accel-check
accel:
0
KVM (version 12) is installed and usable.

在 Windows 上配置 VM 加速

Windows 上的 VM 加速可以使用以下两种虚拟机监控程序之一

  • Windows 虚拟机监控程序平台 (WHPX)
  • Android 模拟器虚拟机监控程序驱动程序 (AEHD)

Windows 虚拟机监控程序平台利用 Windows 提供的 Hyper-V 虚拟机监控程序,提供了最佳兼容性并降低了不稳定性。如果可能,您应该使用WHPX

如果您的系统不支持 WHPX,或者您对其使用有其他顾虑,您可以使用Android 模拟器虚拟机监控程序驱动程序

使用 Windows 虚拟机监控程序平台配置 VM 加速

在启用 WHPX 之前,您的计算机必须满足以下要求

要在 Windows 上安装 WHPX,请按照以下步骤操作

  1. 在 Windows 桌面,点击 Windows 图标以打开“开始”菜单。
  2. 在搜索栏中,输入启用或关闭 Windows 功能

    启用或关闭 Windows 功能控制面板应该会出现并被选中。

  3. 按 Enter 键,或点击启用或关闭 Windows 功能,以启动控制面板。

  4. 勾选 Windows Hypervisor Platform 旁边的复选框。

  5. 点击确定

  6. 安装完成后,重新启动您的计算机。

在 Windows 上使用 Android 模拟器虚拟机监控程序驱动程序 (AEHD) 配置 VM 加速

在安装和使用 Android 模拟器虚拟机监控程序驱动程序之前,您的计算机必须满足以下要求

  • 带有虚拟化扩展的 Intel 或 AMD 处理器。
  • 64 位 Windows 11 或 Windows 10(不支持 32 位 Windows)

    Windows 8.1、Windows 8 和 Windows 7 用户可以继续使用 AEHD 1.7 或更低版本。但是,此类情况将不提供支持。

  • 在 Windows 功能对话框中,必须禁用也使用 Windows Hyper-V 虚拟机监控程序的功能。

    即使未在 Windows 功能对话框中选择 Windows Hypervisor Platform,某些 Windows 组件也会激活并使用 Windows Hyper-V 虚拟机监控程序。其中包括安全功能,例如 Hyper-V内核隔离等。(请注意,Hyper-V 功能与 Hyper-V 虚拟机监控程序不是一回事。)如果您需要这些功能,请改用WHPX

在 AMD 处理器上,可以通过 Android Studio 4.0 Canary 5 或更高版本中的SDK 管理器安装 Android 模拟器虚拟机监控程序驱动程序。

在 Intel 处理器上,可以通过 Android Studio Flamingo 或更高版本中的SDK 管理器安装 Android 模拟器虚拟机监控程序驱动程序。

要从 SDK 管理器安装,请按照以下步骤操作

  1. 选择工具 > SDK 管理器。
  2. 点击SDK 工具标签页,然后选择 Android 模拟器虚拟机监控程序驱动程序
  3. 点击确定以下载并安装 Android 模拟器虚拟机监控程序驱动程序。
  4. 安装完成后,使用以下命令行命令确认驱动程序是否正常运行

    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 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)
           ...
    

Android 模拟器虚拟机监控程序驱动程序也可以从 GitHub 下载和安装。解压驱动程序包后,以管理员权限在命令行运行 silent_install.bat

使用以下命令(在具有管理员权限的命令行中)卸载 Android 模拟器虚拟机监控程序驱动程序

AEHD 2.1 及更高版本

   sc stop aehd
   sc delete aehd

AEHD 2.0 及更低版本

   sc stop gvm
   sc delete gvm

在 macOS 上配置 VM 加速

在 macOS 上,Android 模拟器使用内置的 Hypervisor.Framework,它需要 macOS v10.10 (Yosemite) 或更高版本。但是,Android Studio 可能需要更高版本的 macOS。在这种情况下,请遵循 Android Studio 系统要求。

在 Linux 上配置 VM 加速

基于 Linux 的系统通过 KVM 软件包支持 VM 加速。请按照说明在您的 Linux 系统上安装 KVM,然后验证 KVM 是否已启用。对于 Ubuntu 系统,请参阅 Ubuntu KVM 安装

要求

运行 KVM 需要特定的用户权限。请确保您拥有 KVM 安装说明中指定的足够权限。

要在 Linux 上使用 VM 加速,您的计算机还必须满足以下要求

  • 对于 Intel 处理器:支持虚拟化技术 (VT-x)、Intel EM64T (Intel 64) 功能和已启用执行禁用 (XD) 位功能。
  • 对于 AMD 处理器:支持 AMD 虚拟化 (AMD-V)。

检查 Linux 上是否已安装 KVM

您可以使用模拟器 -accel-check 命令行选项来检查是否已安装 KVM。或者,您可以安装包含 kvm-ok 命令的 cpu-checker 软件包。

以下示例展示了如何使用 kvm-ok 命令

  1. 安装 cpu-checker 软件包

    sudo apt-get install cpu-checker
    egrep -c '(vmx|svm)' /proc/cpuinfo
    

    输出为 1 或更大表示支持虚拟化。输出为 0 表示您的 CPU 不支持硬件虚拟化。

  2. 运行 kvm-ok 命令

    sudo kvm-ok
    

    预期输出

    INFO: /dev/kvm exists
    KVM acceleration can be used
    

    如果您收到以下错误,则表示您仍然可以运行虚拟机。但是,如果没有 KVM 扩展,您的虚拟机将更慢。

    INFO: Your CPU does not support KVM extensions
    KVM acceleration can NOT be used
    

在 Linux 上安装 KVM

使用以下命令安装 KVM

Cosmic (18.10) 或更高版本

sudo apt-get install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

Lucid (10.04) 或更高版本

sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils

Karmic (9.10) 或更早版本

sudo aptitude install kvm libvirt-bin ubuntu-vm-builder bridge-utils

Intel HAXM 卸载指南

从模拟器 33.x.x.x 开始,HAXM 已弃用,因为 Intel 停止了 HAXM 的开发。Android 模拟器虚拟机监控程序驱动程序 (AEHD) 在 Intel 处理器上取代了 Intel HAXM。

建议将 Intel HAXM 从您的 Windows 系统中完全移除,除非您安装了其他依赖 HAXM 的软件,并且您选择保留 Intel HAXM 并自行管理。

要卸载 Intel HAXM,请按照以下步骤操作

检查 Intel HAXM 是否已安装

要确定您的 Windows 系统上是否安装了 Intel HAXM,请打开 Windows 命令控制台并运行以下命令

   sc query intelhaxm

如果 Intel HAXM 已安装并正在运行,您应该在命令输出中看到以下消息。

如果 Intel HAXM 已安装但已禁用,您应该在命令输出中看到以下消息。

在这两种情况下,无论 Intel HAXM 是运行中还是已禁用,它都已安装。您需要进行下一步以继续卸载 Intel HAXM。

如果 Intel HAXM 未安装,您应该会看到以下消息。

通过 Android Studio 的 SDK 管理器卸载 Intel HAXM

从 Android Studio 打开 SDK 管理器,转到“SDK 工具”标签页,然后导航到“Intel x86 模拟器加速器 (HAXM 安装程序) - 已弃用”行。它应该如下图所示。

清除复选框,如下图所示。

点击“应用”按钮,然后应该会弹出以下对话框。

当 Intel HAXM 成功卸载后,您应该会看到以下内容。卸载已完成,您可以在此停止

如果出现任何错误,请继续进行下一步

使用 Windows“设置”卸载 Intel HAXM。

打开 Windows“设置”并导航到“应用 > 已安装的应用”。

找到“Intel Hardware Accelerated Execution Manager”条目并点击“卸载”,如下图所示。

Intel HAXM 卸载程序应该会运行并报告结果。如果卸载成功,请转到删除 Intel HAXM 安装程序包。否则,请继续进行下一步

使用命令行卸载

  1. 通过运行 'sc stop intelhaxm' 停止 Intel HAXM 服务。您应该会看到以下输出。

  2. 通过运行 'sc delete intelhaxm' 删除 Intel HAXM 服务。您应该会看到以下输出。

  3. 转到删除 Intel HAXM 安装程序包

删除 Intel HAXM 安装程序包。

只有在使用 Windows“设置”或命令行卸载 Intel HAXM 时才需要此步骤。如果没有此步骤,Android Studio 的 SDK 管理器可能会继续将 Intel HAXM 列为“已安装”。

安装程序包位于 <您的 Android SDK 文件夹>\extras\intel。默认情况下,Android SDK 将安装在“C:\Users\<您的 Windows 用户 ID>\AppData\Local\Android\Sdk”下。请参阅以下屏幕截图中的示例。