如果模拟器可以使用计算机的硬件(例如 CPU、GPU 和调制解调器),而不是作为纯软件运行,则其运行效果最佳。利用计算机的硬件来提高性能的能力称为硬件加速。
模拟器可以通过两种主要方式使用硬件加速来改善您的体验
- 图形加速,以改善屏幕渲染
- 虚拟机 (VM) 加速,以提高执行速度
大多数计算机上默认启用硬件加速。如果您的计算机上未启用,则此页面介绍如何配置图形和虚拟机 (VM) 加速,以从模拟器获得更高的性能。
配置图形加速
图形加速使用计算机的硬件(通常是 GPU)来加快屏幕渲染速度。Android 设备使用嵌入式系统 OpenGL(OpenGL ES 或 GLES)在屏幕上渲染 2D 和 3D 图形。
当您在 AVD 管理器中创建 Android 虚拟设备 (AVD) 时,您可以指定模拟器是使用硬件还是软件来模拟 AVD 的 GPU。建议使用硬件加速,通常速度更快。但是,如果您的计算机使用与模拟器不兼容的图形驱动程序,则可能需要使用软件加速。
默认情况下,模拟器会根据您的计算机设置决定是否使用硬件或软件图形加速。如果您的 GPU 硬件和驱动程序兼容,则模拟器将使用 GPU。否则,模拟器将使用软件加速(使用计算机的 CPU)来模拟 GPU 处理。
如果从 命令行 启动模拟器,则可以覆盖该 AVD 的虚拟设备实例的图形加速设置。
要求
要使用图形加速,您的开发环境必须具备以下条件
- SDK 工具:建议使用最新版本(最低版本 17)
- SDK 平台:建议使用最新版本(最低版本 Android 4.0.3 修订版 3)
在 AVD 管理器中配置图形加速
要为 AVD 配置图形加速,请按照以下步骤操作
从命令行配置图形加速
要从命令行运行 AVD 时指定图形加速类型,请包含 -gpu
选项,如下例所示
emulator -avd avd_name -gpu mode [{-option [value]} ... ]
mode
的值可以设置为以下选项之一
auto
:让模拟器根据您的计算机设置在硬件或软件图形加速之间进行选择。host
:使用计算机上的 GPU 进行硬件加速。此选项通常为模拟器提供最高的图形质量和性能。但是,如果您的图形驱动程序在渲染 OpenGL 时出现问题,则可能需要使用swiftshader_indirect
或angle_indirect
选项。swiftshader_indirect
:使用 SwiftShader 的 Quick Boot 兼容变体通过软件加速渲染图形。如果您的计算机无法使用硬件加速,则此选项是host
模式的一个很好的替代方案。angle_indirect
: (仅限 Windows)使用 ANGLE Direct3D 的 Quick Boot 兼容变体通过软件加速渲染图形。如果您的计算机无法使用硬件加速,则此选项是host
模式的一个很好的替代方案。在大多数情况下,ANGLE 的性能类似于使用host
模式,因为 ANGLE 使用 Microsoft DirectX 而不是 OpenGL。在 Windows 上,Microsoft DirectX 驱动程序通常比 OpenGL 驱动程序问题更少。此选项使用 Direct3D 11,需要 Windows 10、Windows 8.1 或安装了 Windows 7 平台更新的 Windows 7 SP1。
guest
:使用客户端软件渲染。此选项为模拟器提供最低的图形质量和性能。
以下 mode
选项已弃用
swiftshader
:在版本 27.0.2 中弃用。请改用swiftshader_indirect
。angle
:在版本 27.0.2 中弃用。请改用angle_indirect
(仅限 Windows)。mesa
:在版本 25.3 中弃用。请改用swiftshader_indirect
。
为 Android UI 启用 Skia 渲染
使用 API 级别 27 或更高版本的图像时,模拟器可以使用 Skia 渲染 Android UI。Skia 有助于模拟器更流畅、更高效地渲染图形。
要启用 Skia 渲染,请在 adb
shell 中使用以下命令
su
setprop debug.hwui.renderer skiagl
stop
start
配置虚拟机加速
虚拟机加速使用计算机的处理器来显著提高模拟器的执行速度。一个名为虚拟机管理程序的工具使用计算机处理器提供的虚拟化扩展来管理此交互。本节概述了使用虚拟机加速的要求,并描述了如何在每个操作系统上设置虚拟机加速。
一般要求
要使用虚拟机加速与模拟器,您的计算机必须满足本节中的一般要求。您的计算机还需要满足特定于您操作系统的其他要求。
开发环境要求
要使用虚拟机加速,您的开发环境必须满足以下要求
- 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 系统映像
虚拟化扩展要求
除了开发环境要求外,您的计算机处理器还必须支持虚拟化扩展。支持的处理器有
- 具有英特尔虚拟化技术 (VT-x, vmx) 的英特尔处理器,例如英特尔酷睿 iX 和英特尔酷睿 Ultra 处理器
- 具有 AMD-V (SVM) 的 AMD 处理器,例如 AMD Ryzen 处理器
- 苹果硅
英特尔和 AMD 处理器的其他要求
英特尔和 AMD 处理器需要二级地址转换(英特尔 EPT 或 AMD RVI)。大多数现代英特尔和 AMD 处理器都支持二级地址转换。只有提供虚拟化扩展的第一代英特尔或 AMD 处理器可能没有二级页表转换。
如果您不确定您的处理器是否支持所需扩展,请查看制造商网站上您处理器的规格。如果您的处理器不支持这些扩展,则无法使用虚拟机加速。
限制
虚拟机加速具有以下限制
- 您不能在另一个虚拟机(例如 VirtualBox、VMWare 或 Docker 托管的虚拟机)内运行虚拟机加速的模拟器。您必须在主机计算机上直接运行虚拟机加速的模拟器。
- 根据您的操作系统和虚拟机管理程序,您可能无法同时运行使用其他虚拟化技术的软件以及运行虚拟机加速的模拟器。此类软件的示例包括但不限于虚拟机解决方案、某些防病毒程序和一些反作弊解决方案。这种情况主要在 Windows 上观察到,Hyper-V 关闭时。大多数此类软件可以与 android 模拟器共存,没有任何问题。但是,当发生冲突时,建议不要同时运行虚拟机加速的模拟器和此类软件。
关于虚拟机管理程序
虚拟机加速需要一个虚拟机管理程序,这是一个利用计算机处理器提供的虚拟化扩展的工具。
如果没有虚拟机管理程序和虚拟机加速,模拟器必须逐块将虚拟机中的机器代码转换为符合主机计算机架构的代码。此过程可能非常缓慢。使用虚拟机管理程序时,当虚拟机和主机计算机的架构匹配时,模拟器可以使用虚拟机管理程序直接在主机处理器上运行代码。此改进极大地提高了模拟器的速度和性能。
最适合您的虚拟机管理程序取决于您的计算机的操作系统和配置。有关更多信息,请参阅以下部分之一
检查是否安装了虚拟机管理程序
您可以使用模拟器 -accel-check
命令行选项检查当前是否在您的计算机上安装了虚拟机管理程序。
以下示例显示了如何使用模拟器 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. accelWindows 上有多种虚拟机管理程序选择。因此,您看到的内容可能与此处示例不同。例如,您可能会在消息中看到以下关键字之一: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 上的虚拟机加速可以使用以下两种虚拟机管理程序之一
- Windows 虚拟机平台 (WHPX)
- Android 模拟器虚拟机管理程序驱动程序 (AEHD)
在 Windows 上选择虚拟机管理程序
本节显示了确定要使用哪个虚拟机管理程序的标准。以下部分描述了使用每个虚拟机管理程序配置虚拟机加速的过程。
标准 | 虚拟机管理程序 |
---|---|
您需要同时运行 Hyper-V 和 Android 模拟器。 | 使用 WHPX。 |
您不需要同时运行 Hyper-V 和 Android 模拟器。 | 使用 Android 模拟器虚拟机管理程序驱动程序。 |
使用 Windows 虚拟机平台配置虚拟机加速
在启用 WHPX 之前,您的计算机必须满足以下要求
- 英特尔处理器:支持虚拟化技术 (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 虚拟机平台。
点击确定。
安装完成后,重新启动计算机。
在 Windows 上使用 Android 模拟器虚拟机管理程序驱动程序 (AEHD) 配置虚拟机加速
在安装和使用 Android 模拟器虚拟机管理程序驱动程序之前,您的计算机必须满足以下要求
- 具有虚拟化扩展的英特尔或 AMD 处理器。
64 位 Windows 11 或 Windows 10(不支持 32 位 Windows)
Windows 8.1、Windows 8 和 Windows 7 用户可以继续使用 AEHD 1.7 或更低版本。但是,此类场景将不提供支持。
必须在 Windows 功能对话框中禁用 Hyper-V。
某些 Windows 组件可以在不通过 Windows 功能对话框启用 Hyper-V 的情况下打开 Hyper-V 虚拟机管理程序,例如 Windows Defender 提供的**核心隔离**。在这种情况下,请改用WHPX。
在 AMD 处理器上,可以通过 Android Studio 4.0 Canary 5 或更高版本中的SDK 管理器安装 Android 模拟器虚拟机管理程序驱动程序。
在 Intel 处理器上,可以通过 Android Studio Flamingo 或更高版本中的SDK 管理器安装 Android 模拟器虚拟机管理程序驱动程序。
要从 SDK 管理器安装,请按照以下步骤操作
- 选择**工具 >** SDK 管理器。
- 点击**SDK 工具**选项卡,然后选择**Android Emulator hypervisor driver**。
- 点击**确定**下载并安装 Android 模拟器虚拟机管理程序驱动程序。
安装后,使用以下命令行命令确认驱动程序是否正常运行
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 上配置虚拟机加速
在 macOS 上,Android 模拟器使用内置的Hypervisor.Framework,它需要 macOS v10.10(Yosemite)或更高版本。但是,Android Studio 可能需要更高版本的 macOS。在这种情况下,请遵循 Android Studio 系统要求。
在 Linux 上配置虚拟机加速
基于 Linux 的系统通过KVM 软件包支持虚拟机加速。按照在 Linux 系统上安装 KVM 的说明进行操作,然后验证 KVM 是否已启用。对于 Ubuntu 系统,请参阅Ubuntu KVM 安装。
要求
运行 KVM 需要特定的用户权限。确保您拥有 KVM 安装说明中指定的足够权限。
要在 Linux 上使用虚拟机加速,您的计算机还必须满足以下要求
- 对于 Intel 处理器:支持虚拟化技术 (VT-x)、Intel EM64T (Intel 64) 功能以及已启用的执行禁用 (XD) 位功能。
- 对于 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
Intel HAXM 卸载指南
从模拟器 33.x.x.x 开始,HAXM 已弃用,因为Intel 停止了 HAXM 的开发。Android 模拟器虚拟机管理程序驱动程序 (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 工具”选项卡,然后导航到“Intel x86 Emulator Accelerator (HAXM installer) - Deprecated”行。它应该类似于以下屏幕截图。
清除复选框,如以下屏幕截图所示。
点击“应用”按钮,将弹出以下对话框。
成功卸载 Intel HAXM 后,您应该看到以下内容。卸载已完成,您可以**在此停止**。
如果出现任何错误,请继续执行**下一步**。
使用 Windows“设置”卸载 Intel HAXM。
打开 Windows“设置”,然后导航到“应用 > 已安装的应用”。
找到“Intel Hardware Accelerated Execution Manager”条目,然后点击“卸载”,如以下屏幕截图所示。
Intel HAXM 卸载程序应该运行并报告结果。如果卸载成功,请转到**删除 Intel HAXM 安装程序包**。否则,请继续执行**下一步**。
使用命令行卸载
运行“sc stop intelhaxm”停止 Intel HAXM 服务。您应该看到以下输出。
运行“sc delete intelhaxm”删除 Intel HAXM 服务。您应该看到以下输出。
转到**删除 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”。请参阅以下屏幕截图中的示例。