AVD模拟器的GPU模式简介
前文介绍了如何简单的解决更新GPU驱动后导致AVD无法打开模拟器的问题,具体可以参考Ubuntu系统更新驱动后AVD模拟器无法无法打开,实际上,关于前文提到的gup模式设置,有更多的选项,官网的问题排查也有说明,请参考从命令行配置图形加速,这里简单摘取GPU模式部分。
在启动AVD模拟器的时候,命令为emulator -avd name -gpu mode
,这里的name就是模拟器名称,而mode就是gpu的使用模式,主要的选项为(以下内容摘自官网):
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
:使用访客端软件渲染。使用此选项时,模拟器的图形质量和性能最低。
因此在前面的解决方案中,hw.gpu.mode = off,实际上相当于mode为guest,模拟器的图形质量和性能最低。根据上面的说明,实际尝试了host和swiftshader_indirect,结果:host仍然会出错,但是swiftshader_indirect可以成功,因此也可以将~/.android/avd/<AVD-name>.avd/config.ini
配置文件做如下修改:
hw.gpu.enabled = no
hw.gpu.mode = swiftshader_indirect