Android Studio,在运行模拟器时突然出现GPU驱动程序问题

74

我有一台笔记本电脑,主要用于在Android Studio上进行Android开发。今天当我运行模拟器时,突然收到了这个错误消息(或其旧版本)。

Your GPU driver information:

GPU #1
Make: 8086
Model: Intel(R) HD Graphics Family
Device ID: 0a16
Driver version: 10.18.10.3945
GPU #2
Make: 10de
Model: NVIDIA GeForce 820M
Device ID: 1140
Driver version: 22.21.13.8476 

Some users have experienced emulator stability issues with this driver version. As a result, were selecting a compatibility renderer. Please check with your manufacturer to see if there is an updated driver available. 

更新了GeForce驱动程序,但没有效果,尝试更新英特尔驱动程序,但失败了,有没有办法禁用它?绕过兼容性渲染器并像以前一样工作,模拟器现在很糟糕。为什么会突然发生这种情况?

另外,我正在使用Windows 7 64位系统,如果有帮助的话,前几天进行了更新。

11个回答

66

我正在使用Win10,但遇到了相同的问题。在最后一次模拟器更新之后,模拟器开始崩溃我的应用程序。在我的情况下,问题是即使我从未遇到过GPU方面的问题,模拟器也无法在硬件上运行。此外,“GPU驱动程序问题”弹出窗口甚至没有标明它认为哪个GPU存在问题。

对我有效的解决方案是从终端运行模拟器,使用命令强制其使用硬件图形(而不是让模拟器自行决定)来运行。

emulator -avd avd_name -gpu mode

其中modehost,以便与硬件一起运行。

例如:

使用Android Studio终端移动到模拟器所在的文件夹。 在Win10上默认位置为:C:\ Users \ userName \ AppData \ Local \ Android \ sdk \ emulator

通过列出可用的模拟器来查找要运行的模拟器: emulator -list-avds

使用-gpu host选项运行模拟器: emulator -avd avd_name -gpu host

有关此链接的更多信息


1
它像个工作兽一样,不需要更新Android Studio到beta渠道.. 非常感谢!!! :-) - user6617128
2
嗨Api,我在sdk中没有找到模拟器文件夹。而且“emulator”也不被识别为内部或外部命令。 - vidha
@vidha 如果没有模拟器,你是如何运行你的应用程序的?你使用第三方模拟器还是Android Studio AVD?也许你需要通过AVD管理器安装一个模拟器?也许Android文件夹位于树目录的其他位置? - Api
1
在访问上述路径中的模拟器文件夹后,应将“emulator”识别为命令。 - Panos Gr
太棒了,而且它不会崩溃。这真是谷歌的一个奇怪解决方案,强制使用极慢的兼容模式,因为它可能会崩溃,而我应该更新GPU驱动程序,但它根本不存在。 - Miloš Černilovský

43

一位谷歌员工在bug report中的comment非常有启发性。

如果您的系统没有独立的GPU,我们打算进行这种改变,以便使模拟器更可靠地运行在Intel GPU驱动程序上。您可以自行决定风险,通过进入设置页面,然后将OpenGL ES渲染器更改为“ANGLE(D3D11)”,“ANGLE(D3D9)”或“桌面本机OpenGL”来切换回使用Intel GPU。

看起来所有使用Intel GPU的系统都会显示此消息,而不仅仅是运行特定版本图形驱动程序的系统。

solution是尽可能地切换到使用外部GPU来运行模拟器。

如果Intel GPU是系统上唯一可用的GPU,则可以通过在设置中覆盖默认的OpenGL ES渲染器来重新启用OpenGL ES的加速渲染(见下文)。选项包括OpenGL、ANGLE和SwiftShader。SwiftShader是基于CPU的OpenGL ES仿真,因此此设置不会提供加速。ANGLE是基于Direct3d的OpenGL仿真。

根据评论,这并不能保证有效,实际上,我能够重新启用Android 7模拟器的硬件加速,但启用硬件加速后,我收到的是Android 8模拟器的黑屏。

使用Ctrl-Shift-S打开设置,然后根据模拟器的版本,转到Settings -> General -> OpenGL ES renderer或者Settings -> Advanced -> OpenGL ES renderer

较新的模拟器版本: Settings illustration

较旧的模拟器版本: Settings illustration

更新 #1: 在错误报告中的另一comment提供了更多关于此问题的信息:

如果你只是使用Intel HD 4xxx来运行模拟器,那么使用兼容性渲染器是有意义的。很抱歉,但我们需要能够切换到更好支持的Intel GPU驱动程序,特别是在运行高API级别(25+)的系统映像时。这一代(和更早的)Intel iGPU在OpenGL兼容性方面存在许多问题。

看起来,Haswell(第四代)处理器及更早版本的Intel iGPU驱动程序不足以很好地支持Android 7.1+设备的OpenGL。因此,它们故意回退到使用软件仿真,以更好地支持新的Android模拟器。

这符合我的经验。在Android 7上使用Intel iGPU效果很好,但在Android 7.1上不稳定,在Android 8上根本无法使用。

我的建议是,当使用Intel Haswell和旧iGPU的硬件加速时,请坚持使用Android 7模拟器。

更新#2: 最终以评论的形式在Emulator 26.1.3的发布说明中提供了有关此问题的官方通信:

将使用ANGLE或Swiftshader渲染的GPU如下确定:

  • 旧版Intel iGPU在OpenGL和ANGLE D3D驱动程序上都存在驱动程序问题。使用Intel HD Graphics 3xxx及更早版本的用户将使用Swiftshader。
  • 一些用户报告无法使用API级别25的映像,因为存在“Pixel Launcher keeps stopping”的错误。这似乎是某些Intel HD 4xxx型号的驱动程序问题。因此,它们将自动切换到使用ANGLE。

为了获得最佳的GPU仿真结果,我们建议使用独立的NVIDIA或AMD GPU,或者使用新的Intel GPU(Iris、HD 5xxx、HD 5xx/6xx)。


3
这是一个不错的截图,但是你在哪里找到这个设置?我在设置中没有找到它。 - David Elner
@DavidElner 我更新了截图并提供了更多访问“设置”的详细信息。请确保您在“设置”中的“常规”选项卡中,而不是“代理”选项卡中。 - Jade
2
在Android Studio 3.1.3和Android模拟器27.2.9中,OpenGL渲染器配置位于“高级”部分而非“常规”部分。 - Josem
我尝试按照这个步骤,但是没有“ANGLE”选项。我改用“桌面本地OpenGL”,但是没有效果;在重新启动模拟器后,错误消息再次显示。如果有人有更深入的了解,请提出单独的问题:https://stackoverflow.com/q/54219868/220820 - Andreas
对于任何遇到这个问题的人:切换到SwiftShader对我有用。 - Niammi
显示剩余2条评论

6

今天我遇到了这个问题。根据Google模拟器问题跟踪器的建议,我安装了beta模拟器26.1.3。问题已解决。


1
对于那些想知道如何访问beta频道的人,请查看此链接http://tools.android.com/preview-channel - rewgoes

3

如其他人建议的一样,请前往 设置 -> 外观和行为 -> 系统设置 -> 更新。将“自动检查更新”更改为“Beta渠道”。更新模拟器到最新的beta版。驱动程序问题应该已经解决了。我运行带有谷歌地图片段的应用程序时遇到问题(应用程序崩溃),更新模拟器到最新的beta版后问题得到解决。


2
对于Linux用户,进入Android文件夹,我的情况下是~/Android。然后进入/sdk/emulator。"emulator"是一个本地命令。所以,你可以作为本地"./emulator"运行该命令。
其余部分与用户“Api”所述的一样。 $ ./emulator -avd -avd_name -gpu mode $ ./emulator -avd Nexus_5X_API_26 -gpu host(#在我的情况下)
注意:我没有下载SDK,而是将其复制并粘贴到/home目录下。这就是为什么该命令在全局范围内无效的原因。如果您从头开始设置sdk avd,它应该正常工作。

2

我做了与@Api相同的事情,但是我是从虚拟设备管理器中完成的。在设备编辑窗口中,我选择了“图形”下拉列表中的“硬件- GLES 2.0”。我相信默认设置是自动的。我仍然会收到错误的GPU驱动程序弹出窗口,但模拟器不再崩溃了。它恢复了正常的可靠性。


1

在Mac OS上(我当前使用的是Catalina)

  1. 首先进入模拟器目录 我使用默认位置

    cd /Users/yourusername/Library/Android/sdk/emulator

  2. 搜索模拟器列表

    ./emulator -list-avds

    例如我的输出是: Pixel_2_XL_API_27

  3. 使用-gpu命令运行模拟器

    ./emulator -avd Pixel_2_XL_API_27 -gpu host


1
我遇到了与4天前完全相同的问题。我尝试了上述两个答案,但都没有起作用。 PS. 模拟器可以工作,但似乎会随机崩溃。在出现此错误之前,模拟器运行良好,我可以测试某些功能,并且可以通过USB与几台Android设备进行完全调试,因此我几乎可以确定这是模拟器的问题。
编辑:不确定问题究竟是什么,但是通过强制Android Studio使用nVidia GPU解决了它。

1
我通过禁用GPU并使用软件加速来解决了这个问题。虽然它不如GPU快,但至少有更好的机会正常工作。
我尝试了上面的其他选项,但很遗憾没有一个能够正常工作。
如果您想尝试此选项,请转到AVD Manager(在Android Studio中:Tools-> Android-> AVD Manager),然后编辑您的虚拟设备,在Graphics字段中,您可以将“Software-GLES 1.1”设置为“Hardware-GLES 2.0”。
这不是解决此问题的完美方法,但可以帮助。

0

如何更新GPU驱动程序? 选择Windows开始菜单>控制面板。 打开设备管理器。 (或在“开始”中搜索设备管理器。) 单击显示适配器旁边的箭头。 右键单击Intel HD Graphics并选择更新驱动程序。 选择自动搜索更新的驱动程序软件。


你问问题有什么原因吗? - Scratte
我建议在回答中不要使用修辞性问题。它们可能会被误解为根本不是答案。你是在尝试回答这个页面顶部的问题,对吗?否则请删除此帖子。 - Yunnosch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接