如果模拟器可以使用计算机的硬件(例如 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 配置图形加速,请按以下步骤操作:
- 打开 AVD 管理器。
- 创建新的 AVD 或修改现有的 AVD。
- 在 Verify Configuration 窗口中,找到 Emulated Performance 部分。
- 为 Graphics 选项选择一个值。
- 点击 Finish。
从命令行配置图形加速
如需在从命令行运行 AVD 时指定图形加速类型,请添加 -gpu
选项,如以下示例所示:
emulator -avd avd_name -gpu mode [{-option [value]} ... ]
mode
的值可以设为以下某个选项:
auto
:让模拟器根据计算机设置选择硬件图形加速或软件图形加速。host
:使用计算机上的 GPU 实现硬件加速。通常,使用此选项时,模拟器的图形质量和性能最高。不过,如果您的图形驱动程序在渲染 OpenGL 时出现问题,那么您可能需要使用swiftshader_indirect
或angle_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 处理器
- 采用 AMD-V (SVM) 的 AMD 处理器
- Apple Silicon M1 和 M2 系列
针对 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.0) is installed and usable. accelWindows 上有多种 Hypervisor 选项。因此,您看到的内容可能与这里的示例不同。例如,您可能会在消息中看到以下某个关键字:GVM(AEHD 的旧称); WHPX、HAXM。
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 之一:
- Android Emulator Hypervisor Driver (AEHD)
- Windows Hypervisor Platform (WHPX)
- Intel Hardware Accelerated Execution Manager (HAXM)
在 Windows 上选择 Hypervisor
本部分介绍用于确定应使用哪个 Hypervisor 的标准。下面的部分介绍了使用每个 Hypervisor 配置虚拟机加速的过程。
从模拟器 33.xxx 开始,HAXM 已废弃,因为 Intel 已停止开发 HAXM。Android Emulator Hypervisor Driver (AEHD) 取代了 Intel 处理器上的 Intel HAXM。
标准(模拟器 33.xxx 及更高版本) | Hypervisor |
---|---|
您无需在运行 Android 模拟器的同时运行 Hyper-V。 | 使用 Android Emulator Hypervisor Driver。 |
您需要在运行 Android 模拟器的同时运行 Hyper-V。 | 使用 WHPX。 |
对于模拟器 32.xxx 及更低版本,请继续遵循旧标准来确定使用哪个 Hypervisor。
标准(模拟器 32.xxx 及更低版本) | Hypervisor |
---|---|
您拥有 Intel 处理器且不需要在运行 Android 模拟器的同时运行 Hyper-V。 | 使用 Intel HAXM。 |
您拥有 AMD 处理器且不需要在运行 Android 模拟器的同时运行 Hyper-V。 | 使用 Android Emulator Hypervisor Driver。 |
您拥有 Intel 或 AMD 处理器且需要在运行 Android 模拟器的同时运行 Hyper-V。 | 使用 WHPX。 |
在 Windows 上使用 Android Emulator Hypervisor Driver (AEHD) 配置虚拟机加速
您的计算机必须满足以下要求,您才能安装和使用 Android Emulator Hypervisor Driver:
- 采用支持虚拟化扩展的 Intel 或 AMD 处理器。
安装 64 位 Windows 11、Windows 10、Windows 8 或 Windows 7(32 位 Windows 不受支持)
在 Windows 11、Windows 10 或 Windows 8 中,您必须在“Windows 功能”对话框中关闭 Hyper-V。
采用 AMD 处理器时,可通过 Android Studio 4.0 Canary 5 或更高版本中的 SDK 管理器安装 Android Emulator Hypervisor Driver。
采用 Intel 处理器时,可通过 Android Studio Flamingo 或更高版本中的 SDK 管理器安装 Android Emulator Hypervisor Driver。
如需通过 SDK 管理器安装,请按以下步骤操作:
- 依次选择 Tools > SDK Manager。
- 点击 SDK Tools 标签页,然后选择 Android Emulator Hypervisor Driver。
- 点击 OK,以下载并安装 Android Emulator Hypervisor Driver。
安装后,通过在命令行中使用以下命令,确认驱动程序能正常运行:
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
在 Windows 上使用 Intel HAXM 配置虚拟机加速
您的计算机必须满足以下要求,您才能安装和使用 Intel HAXM:
- 采用支持虚拟化技术 (VT-x) 的 Intel 处理器,并启用 Intel EM64T (Intel 64) 功能和 Execute Disable (XD) Bit 功能
- 安装 64 位 Windows 11、Windows 10、Windows 8 或 Windows 7(或者 64 位处理器上的 32 位版本的操作系统)
对于 Windows 11、Windows 10 或 Windows 8,您必须在“Windows 功能”对话框中关闭 Hyper-V。
如需安装 Intel HAXM 驱动程序,请按以下步骤操作:
- 打开 SDK Manager。
- 点击 SDK Update Sites 标签页,然后选择 Intel HAXM。
- 点击 OK。
下载完成后,运行安装程序。
通常,您可以在以下位置找到安装程序:
sdk\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe
使用向导完成安装。
安装 Intel HAXM 后,通过在命令行中使用以下命令,确认虚拟化驱动程序正常运行:
sc query intelhaxm
状态消息包含以下信息:
SERVICE_NAME: intelhaxm ... STATE : 4 RUNNING ...
如需了解详情,请参阅 Windows 上的 Intel HAXM 安装说明。
如需卸载 Intel HAXM,请使用安装程序或 Windows 控制面板。在卸载 Intel HAXM 前,请关闭正在运行的所有 x86 模拟器。
使用 Windows Hypervisor Platform 配置虚拟机加速
您的计算机必须满足以下要求,您才能启用 WHPX:
- Intel 处理器:支持虚拟化技术 (VT-x)、扩展页表 (EPT) 和无限制访客 (UG) 功能。必须在计算机的 BIOS 设置中启用 VT-x。
- AMD 处理器:建议使用 AMD Ryzen 处理器。必须在计算机的 BIOS 设置中启用虚拟化或 SVM。
- Android Studio 3.2 Beta 1 或更高版本
- Android 模拟器版本 27.3.8 或更高版本
- Windows® 10 或更高版本
如需在 Windows 上安装 WHPX,请按以下步骤操作:
- 在 Windows 桌面上,右键点击 Windows 图标,然后选择应用程序和功能。
- 在相关设置下,点击程序和功能。
- 点击打开或关闭 Windows 功能。
选中 Windows Hypervisor Platform。
点击 OK。
安装完成后,重启计算机。
停用 Hyper-V 时仔细检查
必须停用 Hyper-V 才能使用 Android Emulator Hypervisor Driver 或 Intel HAXM。但是,在“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 的问题跟踪器提交错误。
在 macOS 上配置虚拟机加速
在 MacOS 上,Android 模拟器使用内置的 Hypervisor.Framework,该框架需要 MacOS v10.10 (Yosemite) 及更高版本。
在 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
命令:
安装
cpu-checker
软件包:sudo apt-get install cpu-checker egrep -c '(vmx|svm)' /proc/cpuinfo
输出值 1 或更大值表示支持虚拟化。输出值 0 表示您的 CPU 不支持硬件虚拟化。
运行命令
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