为 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 或更高版本
  • 带有基于 x86 的系统映像的 AVD,适用于 Android 2.3.3(API 级别 10)及更高版本

虚拟化扩展要求

除了满足开发环境要求之外,您的计算机处理器还必须支持以下虚拟化扩展技术之一:

  • Intel 虚拟化技术(VT、VT-x 和 vmx)扩展
  • AMD 虚拟化(AMD-V 和 SVM)扩展

大多数现代处理器都支持这些虚拟化扩展。如果您不确定自己的处理器是否支持这些扩展,请在制造商的网站上查看自己的处理器的规格。如果您的处理器不支持其中某项扩展,则您无法使用虚拟机加速。

限制

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

  • 您无法在另一个虚拟机(例如由 VirtualBox、VMWare 或 Docker 托管的虚拟机)内运行虚拟机加速的模拟器。您必须直接在主机上运行虚拟机加速的模拟器。
  • 根据您的操作系统和 Hypervisor,您无法在运行虚拟机加速的模拟器的同时运行使用其他虚拟化技术的软件。例如,VirtualBox、VMWare 和 Docker 当前使用其他虚拟化技术,因此您无法在运行加速的模拟器的同时运行它们。

关于 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
HAXM version 7.3.2 (4) is installed and usable.
accel

macOS:

janedoe-macbookpro:Android janedoe$ ./Sdk/emulator/emulator -accel-check
accel:
0
HAXM version 7.3.2 (4) is installed and usable.
accel

Linux:

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

在 Windows 上配置虚拟机加速

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

  • Intel Hardware Accelerated Execution Manager (HAXM)
  • Android Emulator Hypervisor Driver for AMD Processors
  • Windows Hypervisor Platform (WHPX)

在 Windows 上选择 Hypervisor

您可按照以下条件来确定应使用哪个 Hypervisor。 下面的部分介绍了使用每个 Hypervisor 配置虚拟机加速的过程。

条件 Hypervisor
您拥有 Intel 处理器且不需要在运行 Android 模拟器的同时运行 Hyper-V。 使用 Intel HAXM
您拥有 Intel 处理器且需要在运行 Android 模拟器的同时运行 Hyper-V。 使用 WHPX
您拥有 AMD 处理器且不需要在运行 Android 模拟器的同时运行 Hyper-V。 使用 Android Emulator Hypervisor Driver for AMD Processors
您拥有 AMD 处理器且需要在运行 Android 模拟器的同时运行 Hyper-V。 使用 WHPX

停用 Hyper-V 时仔细检查

必须停用 Hyper-V 才能使用 Intel HAXM 或 Android Emulator Hypervisor Driver for AMD Processors。但是,在“Windows 功能”对话框中取消选择“Hyper-V”可能无法保证“Hyper-V”被停用。

Windows 10 中有很多功能都会隐式启用 Hyper-V。用户在启用此类功能中的某一项功能时,甚至不会知道 Hyper-V 被启用。这些功能包括:

  • Virtual Machine Platform
  • Windows Hypervisor Platform
  • Windows Sandbox
  • Core Isolation
  • Credential Guard

此外,适用于 Linux 版本 2 的 Windows 子系统需要使用 Virtual Machine Platform,这意味着它隐式需要 Hyper-V。此列表并非详尽无遗,如果您发现了应被纳入此列表中的功能,请提交 bug

停用 Hyper-V 时,请仔细确认所列功能也处于停用状态。如需了解如何停用各项功能,请参阅 Microsoft 文档和以下示例。

某些平台不会在您关闭 Hyper-V 时立即停用它。发生这种情况时,Windows 操作系统不会返回任何错误,且 Hyper-V 在“Windows 功能”对话框中为已停用状态。如果您遇到这种情况,请通过 Microsoft 的问题跟踪器提交错误。

在 Windows 上使用 Intel HAXM 配置虚拟机加速

您的计算机必须满足以下要求,您才能安装和使用 Intel HAXM:

  • 启用了虚拟化技术 (VT-x)、Intel EM64T (Intel 64) 功能和 Execute Disable (XD) Bit 功能的 Intel 处理器
  • 64 位 Windows 10、Windows 8 或 Windows 7(或者 64 位处理器上的 32 位版本的操作系统)
  • 在 Windows 10 或 Windows 8 上,您必须在“Windows 功能”对话框中关闭 Hyper-V。

如需安装 Intel HAXM 驱动程序,请按以下步骤操作:

  1. 打开 SDK Manager
  2. 点击 SDK Update Sites 标签页,然后选择 Intel HAXM
  3. 点击 OK
  4. 下载完成后,运行安装程序。

    通常,您可以在以下位置找到安装程序:sdk\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe

  5. 使用向导完成安装。

  6. 安装 Intel HAXM 后,通过在命令行中使用以下命令,确认虚拟化驱动程序正常运行:

    sc query intelhaxm
    

    状态消息包含以下信息:

    SERVICE_NAME: intelhaxm
           ...
           STATE              : 4  RUNNING
           ...
    

如需了解详情,请参阅 Windows 上的 Intel HAXM 安装说明

如需调整可供 Intel HAXM 内核扩展使用的内存量,请再次运行安装程序。

如需卸载 Intel HAXM,请使用安装程序或 Windows 控制面板。在卸载 Intel HAXM 前,请关闭正运行的所有 x86 模拟器。

在 Windows 上使用 Android Emulator Hypervisor Driver for AMD Processors 配置虚拟机加速

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

  • 采用 Secure Virtual Machine (SVM) 技术的 AMD 处理器
  • 64 位 Windows 10、Windows 8 或 Windows 7(32 位 Windows 不受支持)
  • 在 Windows 10 或 Windows 8 上,您必须在“Windows 功能”对话框中关闭 Hyper-V。

您可以通过 Android Studio 4.0 Canary 5 或更高版本中的 SDK 管理器 或通过 GitHub 安装 Android Emulator Hypervisor Driver for AMD Processors。

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

  1. 依次选择 Tools > SDK Manager。
  2. 点击 SDK Tools 标签页,然后选择 Android Emulator Hypervisor Driver for AMD Processors
  3. 点击 OK,以下载并安装 Android Emulator Hypervisor Driver for AMD processors。
  4. 安装后,通过在命令行中使用以下命令,确认驱动程序正常运行:

    sc query gvm
    

    状态消息包含以下信息:

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

    以下错误消息表示您的 BIOS 中未启用 SVM,或您未停用 Hyper-V。

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

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

安装成功后,系统会显示以下输出:

如果是升级安装,则会看到以下输出,其中包括有关原有驱动程序被卸载的消息:

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

   sc stop gvm
   sc delete gvm

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

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

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

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

  5. 点击 OK

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

在 macOS 上配置虚拟机加速

在 Mac OS X v10.10 Yosemite 及更高版本的操作系统上,Android 模拟器默认使用内置的 Hypervisor.Framework,如果 Hypervisor.Framework 未能初始化,则回退到使用 Intel HAXM。

如需在 Hypervisor.Framework 不可用时在 macOS 上使用虚拟机加速,您必须安装 Intel HAXM 内核扩展。

如需安装 Intel HAXM 内核扩展,请按以下步骤操作:

  1. 打开 SDK Manager
  2. 点击 SDK Update Sites 标签页,然后选择 Intel HAXM
  3. 点击 OK
  4. 下载完成后,运行安装程序。

    通常,您可以在以下位置找到安装程序:sdk/extras/intel/Hardware_Accelerated_ExecutionManager/IntelHAXMversion.dmg

  5. 按照屏幕上的说明完成安装。

  6. 安装完毕后,通过在命令行中运行以下命令,确认新的内核扩展正常运行:

    kextstat | grep intel
    

    状态消息包含以下扩展名称,表示已加载内核扩展:

    com.intel.kext.intelhaxm
    

如需了解详情,请参阅 Intel HAXM 安装说明

如需调整可供 Intel HAXM 内核扩展使用的内存量,请再次运行安装程序。

您可以通过卸载来停止使用 Intel HAXM 内核扩展。在卸载前,请关闭正运行的所有 x86 模拟器,然后在命令行中运行以下命令:

sudo /System/Library/Extensions/intelhaxm.kext/Contents/Resources/uninstall.sh

在 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

    $ 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