为 Android 模拟器配置硬件加速

如果模拟器可以使用计算机的硬件(例如 CPU、GPU 和调制解调器),而不是作为纯软件运行,则其运行效果最佳。使用计算机硬件提升性能的功能称为硬件加速

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

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

在大多数计算机上,硬件加速默认处于启用状态。如果您的机器上未启用加速模式,本页将介绍如何配置图形加速和虚拟机 (VM) 加速,以使模拟器实现更高的性能。

配置图形加速

图形加速使用计算机的硬件(通常是 GPU)来加快屏幕渲染速度。Android 设备使用 OpenGL for Embedded Systems(即 OpenGL ES 或 GLES)在屏幕上渲染 2D 和 3D 图形。

在 AVD 管理器中创建 Android 虚拟设备 (AVD) 时,您可以指定让模拟器使用硬件还是软件来模拟 AVD 的 GPU。建议使用硬件加速,因为硬件加速通常速度更快。不过,如果您的计算机使用与模拟器不兼容的图形驱动程序,则您可能需要使用软件加速。

默认情况下,模拟器根据您的计算机设置来决定是使用硬件图形加速还是软件图形加速。如果您的 GPU 硬件和驱动程序兼容,模拟器将使用 GPU。否则,模拟器将使用软件加速(使用计算机的 CPU)来模拟 GPU 处理。

如果从命令行启动模拟器,您可为相应虚拟设备实例替换 AVD 中的图形加速设置。

要求

如需使用图形加速,您的开发环境必须满足以下要求:

  • SDK 工具:建议使用最新版本(最低为版本 17)
  • SDK Platform:建议使用最新版本(最低 Android 4.0.3,修订版 3)

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

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

  1. 打开 AVD 管理器
  2. 创建新的 AVD修改现有的 AVD
  3. Verify Configuration 窗口中,找到 Emulated Performance 部分。
  4. Graphics 选项选择一个值。
  5. 点击 Finish

从命令行配置图形加速

如需在从命令行运行 AVD 时指定图形加速类型,请添加 -gpu 选项,如以下示例所示:

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

mode 的值可以设为以下某个选项:

  • auto:让模拟器根据计算机设置选择硬件图形加速或软件图形加速。
  • host:使用计算机上的 GPU 实现硬件加速。通常,使用此选项时,模拟器的图形质量和性能最高。不过,如果您的图形驱动程序在渲染 OpenGL 时出现问题,那么您可能需要使用 swiftshader_indirectangle_indirect 选项。
  • swiftshader_indirect:使用与快速启动兼容的 SwiftShader 变体,利用软件加速渲染图形。如果您的计算机无法使用硬件加速,此选项可以有效地替代 host 模式。
  • angle_indirect:(仅适用于 Windows)使用与快速启动兼容的 ANGLE Direct3D 变体,利用软件加速渲染图形。如果您的计算机无法使用硬件加速,此选项可以有效地替代 host 模式。 在大多数情况下,使用 ANGLE 时的性能与使用 host 模式时的性能差不多,因为 ANGLE 使用 Microsoft DirectX 而非 OpenGL。

    在 Windows 上,Microsoft DirectX 驱动程序通常比 OpenGL 驱动程序的问题要少。此选项使用 Direct3D 11,并且要求运行 Windows 10、Windows 8.1 或带有 Windows 7 Platform Update 的 Windows 7 SP1。

  • guest:使用访客端软件渲染。使用此选项时,模拟器的图形质量和性能最低。

以下 mode 选项已废弃:

  • swiftshader:在版本 27.0.2 中已废弃,请改用 swiftshader_indirect
  • angle:在版本 27.0.2 中已废弃,请改用 angle_indirect(仅适用于 Windows)。
  • mesa:在版本 25.3 中已废弃,请改用 swiftshader_indirect

为 Android 界面启用 Skia 渲染

使用 API 级别 27 或更高级别的映像时,模拟器可以使用 Skia 渲染 Android 界面。Skia 可帮助模拟器更流畅、更高效地渲染图形。

如需启用 Skia 渲染,请在 adb shell 中使用以下命令:

su
setprop debug.hwui.renderer skiagl
stop
start

配置虚拟机加速

虚拟机加速使用计算机的处理器来显著提高模拟器的执行速度。一个称为“Hypervisor”的工具使用计算机处理器提供的虚拟化扩展来管理此交互。本部分概述了使用虚拟机加速的要求,并介绍了如何在各个操作系统上设置虚拟机加速。

常规要求

如需在模拟器中使用虚拟机加速,您的计算机必须满足本部分的常规要求。此外,您的计算机还需要满足特定于您的操作系统的其他要求。

开发环境要求

如需使用虚拟机加速,您的开发环境必须满足以下要求:

  • SDK 工具:最低为版本 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 silicon

针对 Intel 和 AMD 处理器的其他要求:

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

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

限制

虚拟机加速存在以下限制:

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

关于 Hypervisor

虚拟机加速需要使用 Hypervisor,这款工具使用由计算机处理器提供的虚拟化扩展。

如果没有 Hypervisor 和虚拟机加速,模拟器必须逐块转换虚拟机中的机器代码,以使其符合主机的架构。此过程可能很慢。有了 Hypervisor,若虚拟机与主机的架构相符,模拟器可以使用 Hypervisor 直接在主机处理器上运行代码。这种改进可极大地提高模拟器的速度和性能。

最适合您使用的 Hypervisor 取决于您计算机的操作系统和配置。如需了解详情,请参阅以下相应部分:

检查是否安装了 Hypervisor

您可以使用模拟器的 -accel-check 命令行选项来检查计算机上当前是否安装了 Hypervisor。

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

Windows:

c:\Users\janedoe\AppData\Local\Android> Sdk\emulator\emulator -accel-check
accel:
0
AEHD (version 2.2) is installed and usable.
accel
Windows 上有多个 Hypervisor 选项。因此,您看到的内容可能与这里的示例不同。例如,您可能会在消息中看到以下关键字之一:GVM(AEHD 的旧称)、WHPX

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 上配置虚拟机加速

Windows 上的虚拟机加速可以使用以下两个 Hypervisor 之一:

  • Windows Hypervisor Platform (WHPX)
  • Android Emulator Hypervisor Driver (AEHD)

在 Windows 上选择 Hypervisor

本部分介绍用于确定应使用哪个 Hypervisor 的标准。下面的部分介绍了使用每个 Hypervisor 配置虚拟机加速的过程。

条件 Hypervisor
需要在运行 Android 模拟器的同时运行 Hyper-V。 使用 WHPX
无需在运行 Android 模拟器的同时运行 Hyper-V。 使用 Android Emulator Hypervisor Driver

使用 Windows Hypervisor Platform 配置虚拟机加速

您的计算机必须满足以下要求,您才能启用 WHPX:

如需在 Windows 上安装 WHPX,请按以下步骤操作:

  1. 在 Windows 桌面上,右键点击 Windows 图标,然后选择应用程序和功能
  2. 相关设置下,点击程序和功能
  3. 点击打开或关闭 Windows 功能
  4. 选中 Windows Hypervisor Platform

  5. 点击 OK

  6. 安装完成后,重启计算机。

在 Windows 上使用 Android Emulator Hypervisor Driver (AEHD) 配置虚拟机加速

您的计算机必须满足以下要求,您才能安装和使用 Android Emulator Hypervisor Driver:

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

    Windows 8.1、Windows 8 和 Windows 7 用户可以继续使用 AEHD 1.7 或更低版本。不过,我们不会针对此类情况提供支持。

  • 必须在“Windows 功能”对话框中停用 Hyper-V。

    某些窗口组件可以开启 Hyper-V Hypervisor,而无需在“Windows 功能”对话框中启用 Hyper-V,例如 Windows Defender 提供的核心隔离。在此类情况下,请改用 WHPX

采用 AMD 处理器时,可通过 Android Studio 4.0 Canary 5 或更高版本中的 SDK 管理器安装 Android Emulator Hypervisor Driver。

采用 Intel 处理器时,可通过 Android Studio Flamingo 或更高版本中的 SDK 管理器安装 Android Emulator Hypervisor Driver。

如需通过 SDK 管理器安装,请按以下步骤操作:

  1. 依次选择 Tools > SDK Manager。
  2. 点击 SDK Tools 标签页,然后选择 Android Emulator Hypervisor Driver
  3. 点击 OK,以下载并安装 Android Emulator Hypervisor Driver。
  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)
           ...
    

您也可以通过 GitHub 下载并安装 Android Emulator Hypervisor Driver。解压缩驱动程序软件包后,使用管理员权限在命令行中运行 silent_install.bat

您可通过使用管理员权限在命令行中运行以下命令,来卸载 Android Emulator Hypervisor Driver。

AEHD 2.1 及更高版本

   sc stop aehd
   sc delete aehd

AEHD 2.0 及更低版本

   sc stop gvm
   sc delete gvm

在 macOS 上配置虚拟机加速

在 macOS 上,Android 模拟器使用内置的 Hypervisor.Framework,该框架需要 macOS v10.10 (Yosemite) 及更高版本。不过,对于 macOS,Android Studio 可能需要更高版本。在这种情况下,请遵循 Android Studio 系统要求。

在 Linux 上配置虚拟机加速

基于 Linux 的系统通过 KVM 软件包来支持虚拟机加速。 请按照在 Linux 系统上安装 KVM 的说明进行操作,然后验证是否启用了 KVM。对于 Ubuntu 系统,请参阅 Ubuntu KVM 安装

要求

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

如需在 Linux 上使用虚拟机加速,您的计算机还必须满足以下要求:

  • 对于 Intel 处理器:支持虚拟化技术 (VT-x),并启用 Intel EM64T (Intel 64) 功能且 Execute Disable (XD) Bit 功能。
  • 对于 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.xxx 开始,HAXM 已废弃,因为 Intel 已停止开发 HAXM。Android Emulator Hypervisor Driver (AEHD) 取代了 Intel 处理器上的 Intel HAXM。

建议您从 Windows 系统中完全移除 Intel HAXM,除非您安装了其他依赖于 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 Tools”标签页,然后前往“Intel x86 Emulator Accelerator (HAXM installer) - 已弃用”行。它应如以下屏幕截图所示。

取消选中该复选框,如以下屏幕截图所示。

点击“应用”按钮,系统应会弹出以下对话框。

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

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

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

打开 Windows“设置”,然后依次转到“应用 > 已安装的应用”。

找到“Intel Hardware Accelerated Execution Manager”条目,然后点击“Uninstall”,如以下屏幕截图所示。

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 列为“已安装”。

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