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

时间:2017-07-15 19:08:49

标签: android android-studio android-emulator

我有一台笔记本电脑,我主要用于Android工作室的Android开发,今天突然得到这个错误信息(或它的过时版本),当我运行我的模拟器

from OpenUSB import transmitter

def valuepullup():
    newval = transmitter()
    print(newval)

def transmitter():
    return 2

valuepullup()

更新了geforce驱动程序,但没有用,尝试更新英特尔驱动程序但失败了,有没有办法禁用它?绕过兼容性渲染器并像以前一样工作,模拟器现在很糟糕。任何解释为何突然发生的事情?

此外,我正在使用Windows 7 64位,如果这对任何事都有帮助,几天前有更新。

10 个答案:

答案 0 :(得分:42)

我使用的是Win10,但遇到了同样的问题。在最后一次模拟器更新后,模拟器开始崩溃我的应用程序。在我的情况下,问题是模拟器不能在硬件上运行,即使我的GPU没有问题。此外," GPU驱动程序问题"弹出的窗口甚至没有标记其认为是其中一个GPU的问题。

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

emulator -avd avd_name -gpu mode

其中模式主机,以便它可以与硬件一起运行。

例如:

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

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

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

有关this link

的更多信息

答案 1 :(得分:27)

Google员工关于此问题的comment上的bug report很有启发性。

  

如果您的系统没有独立的GPU,我们打算进行此更改   为了让仿真器更可靠地运行在英特尔GPU驱动程序上。在   你自己承担风险,你可以转而使用英特尔GPU   设置页面,然后将OpenGL ES渲染器更改为“ANGLE   (D3D11)“,”ANGLE(D3D9)“或”桌面原生OpenGL“。

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

如果可能,solution将切换到使用外部GPU运行模拟器。

如果英特尔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 rendererSettings -> Advanced -> OpenGL ES renderer

较新的模拟器版本: Settings illustration

较旧的模拟器版本: Settings illustration

更新#1: 错误报告中的另一个comment提供了有关此问题的进一步说明:

  

如果您只有运行仿真器的Intel HD 4xxx,则打算使用兼容性渲染器。我很抱歉,但我们需要能够切换到更好支持的英特尔GPU驱动程序,尤其是在运行高API级别(25+)的系统映像时。这一代(以及更早版本)的英特尔iGPU在OpenGL兼容性方面存在许多问题。

似乎Haswell(第四代)处理器及更早版本的Intel iGPU驱动程序不支持OpenGL,足以支持Android 7.1+设备。因此,他们故意回归使用软件仿真,更好地支持新的Android仿真器。

这符合我的经验。使用英特尔iGPU在Android 7上运行效果很好,但在Android 7.1上很不稳定,在Android 8上根本不起作用。

我的建议是,在为Intel Haswell和旧版iGPU使用硬件加速时,坚持使用Android 7仿真器。

更新#2: 关于这个问题的官方沟通最终以release notes对模拟器26.1.3的评论形式提供:

  

将切换到使用ANGLE或Swiftshader渲染的GPU将按如下方式确定:

     
      
  • 较旧的Intel iGPU在OpenGL和ANGLE D3D驱动程序上都存在驱动程序问题。使用英特尔高清显卡3xxx及更早版本的用户将使用Swiftshader。
  •   
  • 一些用户报告说无法使用API​​级别25的图像,因为“Pixel Launcher一直停止”的错误。这似乎是某些Intel HD 4xxx型号的驱动程序问题。因此他们将自动切换为使用ANGLE。
  •   
     

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

答案 2 :(得分:5)

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

答案 3 :(得分:2)

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

答案 4 :(得分:2)

如其他建议,请转到设置 - >外观&行为 - >系统设置 - >更新。将“自动检查更新”更改为“测试版渠道”。将模拟器更新到最新测试版。司机问题应该消失了。我在使用谷歌地图(app chrash)运行片段时遇到了问题,这些问题是在将模拟器更新到最新测试版后解决的。

答案 5 :(得分:1)

对于linux用户,请转到Android文件夹,在我的情况下是〜/ Android。然后进入/ sdk / emulator。 “模拟器”是一个本地命令。因此,您可以将命令作为本地“./emulator”运行。

剩下的就是用户“Api”所说的。

$ ./emulator -avd -avd_name -gpu mode

$ ./emulator -avd Nexus_5X_API_26 -gpu host(#IN MY CASE)

注意:我没有下载SDK,而是将其复制并粘贴到/ home目录下。这就是为什么命令在全球范围内无效。如果您从头开始设置sdk avd,它应该可以正常工作。

答案 6 :(得分:0)

I'm having the exact same issue from precisely 4 days ago. I've tried both above answers but none of it work. PS. The emulator works, but just crashes seemingly at random. I prior to this error, the emulator worked fine and i could test certain features, i can also debug completely with no crashes via USB with a few android devices so im almost certain its a problem with the emulator.

Edit: Not sure what eactly the problem was, but was solved by forcing Android Studio to run with nVidia GPU.

答案 7 :(得分:0)

我设法通过禁用GPU来解决此问题,以便AVD使用软件加速。 它不会像GPU那么快,但至少它有更好的机会正常工作。

我尝试了上面的其他选项,但遗憾的是没有一个可以正常工作。

如果您想尝试此选项,请转到AVD管理器(在Android Studio中:工具 - > Android - > AVD管理器),然后编辑您的虚拟设备,在图形字段中,您可以设置“软件 - GLES 1.1“而不是”硬件 - GLES 2.0“。

这不是解决此问题的完美方法,但它可以提供帮助。

答案 8 :(得分:0)

在我使用intel hd4000的Windows笔记本电脑上,这对我没有任何影响

什么有效是ubuntu linux 在我在linux上运行模拟器后,我对它的速度感到震惊:)

所以看来intel和windows的问题不会很快得到解决

答案 9 :(得分:0)

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

  1. 首先移至仿真器目录 我使用默认位置

    cd /用户/您的用户名/库/ Android / sdk /模拟器

  2. 仿真器搜索列表

    ./ emulator -list-avds

    示例我的输出是: Pixel_2_XL_API_27

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

    ./ emulator -avd Pixel_2_XL_API_27 -gpu主机

相关问题