Android模拟器 - 无法加载驱动程序

时间:2016-10-16 01:46:31

标签: android linux android-emulator

在Ubuntu上运行,我收到此错误:

Cannot launch AVD in emulator.
Output:
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request:  GLXBadContext
  Major opcode of failed request:  155 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  55
  Current serial number in output stream:  54

平台工具是最新的。

模拟器图片使用https://dl.google.com/android/repository/sys-img/google_apis/x86_64-24_r08.zip,它位于Android N上。

更新(2016年12月2日): @Sébastien的解决方案不再有效,但给出了:

Cannot launch AVD in emulator.
Output:
failed to create drawable
getGLES2ExtensionString: Could not create GLES 2.x Pbuffer!
Failed to obtain GLES 2.x extensions string!
Could not initialize emulated framebuffer
emulator: Listening for console connections on port: 5554
emulator: Serial number of this emulator (for ADB): emulator-5554
emulator: ERROR: Could not initialize OpenglES emulation, use '-gpu off' to disable it.
emulator: WARNING: ./android/metrics/metrics_reporter.cpp:142: Failed to get a writable, unused path for metrics. Tried: /home/me/.android/avd/metrics/metrics.17386.yogibear

如果我禁用基于GPU的渲染并切换到基于软件的GL图形,则会出现此运行时错误:

Firebase API initialization failure.
               DeadSystemException: The system died; earlier logs will point to the root cause
FATAL EXCEPTION: main
                  Process: com.whatever.mobile, PID: 4501
                  DeadSystemException: The system died; earlier logs will point to the root cause

4 个答案:

答案 0 :(得分:20)

有同样的问题,我的修复是设置以下env变量:

  

导出ANDROID_EMULATOR_USE_SYSTEM_LIBS = 1

在我的情况下,我把它放在〜/ .bashrc中。 随着发送,我像往常一样启动模拟器,即从命令行:

  

$ emulator -avd Nexus_4_API_23

看起来它是Android错误跟踪器中跟踪的常见问题:https://code.google.com/p/android/issues/detail?id=197254

答案 1 :(得分:9)

我只是面对同样的错误,只是删除$ANDROID_HOME/tools/lib64/libstdc++/*为我工作。 16.10(6.0.22)附带的libstdc ++版本大于sdk工具(6.0.18)附带的版本,我认为它会与其他库产生冲突。

答案 2 :(得分:3)

该问题与l ibstdc ++。so.6 有关,请转到Android SDK,可以使用以下命令解决:

cd ~/...../sdk/tools/lib64/libstdc++
mv libstdc++.so.6 libstdc++.so.6_OLD
ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6

信用:https://code.google.com/p/android/issues/detail?id=197254#c43

答案 3 :(得分:0)

我一直在努力解决这个问题,答案是正确的,只是应用方法花了我时间弄清楚:

(作为Root)我运行了:找到libstdc ++。so.6

然后使用当前lib WITH VERSION和LOCATION的结果列表 我将mv / rm应用于Android SDK附带的(〜/ Android / Sdk / emulator / lib / libstdc ++ / libstdc ++。so.6),然后从系统链接(/ usr / lib) /i386-linux-gnu/libstdc++.so.6或/usr/lib/x86_64-linux-gnu/libstdc++.so.6或/usr/lib32/libstdc++.so.6取决于您的系统)