Android Studio AVD启动错误

24

我在Ubuntu 15.10电脑上下载了一个Nexus 6P API23模拟器。当我尝试启动它时,它会失败并弹出对话框,显示:

(AVD配置:Nexus 6P API 23 x86 -- 硬件-GLES 2.0图形)

Cannot launch AVD in emulator.
Output:
libGL error: unable to load driver: nouveau_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: nouveau
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:  47
  Current serial number in output stream:  46
libGL error: unable to load driver: nouveau_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: nouveau
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:  47
  Current serial number in output stream:  46
libGL error: unable to load driver: nouveau_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: nouveau
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  155 (GLX)
  Minor opcode of failed request:  24 (X_GLXCreateNewContext)
  Value in failed request:  0x0
  Serial number of failed request:  33
  Current serial number in output stream:  34
QObject::~QObject: Timers cannot be stopped from another thread

我已经尝试过其他 AVD,它们都不起作用。


这是一个驱动程序问题,我猜你有NVidia驱动程序。 - Mounir Elfassi
我也遇到了同样的问题,我使用的是AMD驱动程序。你找到解决方法了吗? - dazza5000
@dazza5000 没有 :/ - Kevin Dixson
我有一个这样的问题。 - Yevhen Vasilenko
2
可能是重复的问题:无法在Linux(Ubuntu 15.10)上启动模拟器 - Alexandre Schmidt
可能是重复的问题:无法在Android Studio 2.0中启动模拟器 - lepe
7个回答

53

在 AVD 设置中的 Emulated Performance Graphics 选项中,您还可以使用 "Software"。


这对我有用。Ubuntu 16.04 64位,Android Studio 2.1.2。 - Jim Fred
2
简单就是最好的。谢谢。 - saintjab
这对我有用。Debian 8.6 Jessie amd64,Android Studio 2.1.3。 - Emirhan Özlen
在Android Studio 2.3.3 Debian 9 Stretch上对我有效。更改为软件GLES。 - Martin Naughton
这并不适用于每个 AVD,因为在某些 AVD 上它是灰色的。如果它对你禁用了,请尝试另一个。这对我起作用了。 - GenericJam
简单修复。谢谢。 - Gereltod

14

我曾经遇到了和你一样的错误,但是我找到了一个解决方法。希望这个方法也能解决你的问题。

不要使用Android Studio来启动模拟器,而是打开终端并进入你的Android SDK目录中的tools目录 - 我的目录是~/Android/Sdk/tools。从那里运行以下命令:

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 ./emulator -avd <插入AVD名称>

现在,您应该能够通过按下绿色运行箭头并选择刚刚启动的模拟器来启动您的应用程序。

欲了解更多信息,请访问此处

编辑:

经过更深入的思考,我尝试了这个脚本,似乎可以使你在Android Studio中启动模拟器。它将可执行文件替换为调用上面命令的bash脚本。你需要将路径改为正确的tools目录位置。我建议您备份您的tools目录以防万一发生意外情况:

#!/bin/bash

TOOLS_PATH='/home/user/Android/Sdk/tools'
UNEXPANDED_LIB='$LIB'

for emul in ${TOOLS_PATH}/em*
do
cp ${emul} ${emul}-orig
cat <<EOF > ${emul}
#!/bin/bash
LD_PRELOAD='/usr/$UNEXPANDED_LIB/libstdc++.so.6' ${emul}-orig "\$@"
EOF
done

我创建了一个Python脚本,使用您的修复提供了一个非常基本的启动器:https://gist.github.com/NickGeek/1e125d7ca6aeff2d4e0e3ac2399bc14c - NStorm
1
  1. 请确保将TOOLS_PATH更新为您自己的路径。
  2. 将该脚本放在.../tools目录之外。
  3. 只运行一次!(如果运行两次,您将需要重新安装SDK工具),因为文件会被替换。每次更新SDK工具时都需要执行它(所以请记住这一点)。
- lepe

7
我的情况是:我使用Debian Jessie和Android Studio 2.2.3。我的显卡是Sapphire的ATI Radeon HD 6850。 模拟器显示存在一个加载图形驱动程序的问题(“libGL error: unable to load driver: r600_dri.so”)。如此处所述,似乎Google与Android Studio一起打包了一个旧版本的库(libstdc++.so.6),当模拟器尝试使用图形卡时会失败。 解决方法很简单:使用系统库而不是Android Studio中打包的库。如何实现?在命令的末尾添加“-use-system-libs”。所以:
./emulator -avd EMULATOR_NAME -netspeed full -netdelay none -use-system-libs

如果您不想使用终端,那么最终解决方案是为您的用户/系统设置ANDROID_EMULATOR_USE_SYSTEM_LIBS环境变量并将其设置为1。通过这种改变,当您在Android Studio中运行模拟器时,它将加载系统库而不是打包的库。
PS-我发现设置环境变量最简单的方法是修改启动Android Studio的脚本(studio.sh,在我的情况下在/opt/android-studio/bin目录下),并在开头添加以下内容:
export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

更新 2017年12月:我在Debian Stretch和Android Studio 3.0.1(同一显卡)上遇到了同样的问题。相同的解决方案对我有效。


1
在终端(Ctrl-Alt-T)中输入以下内容,这对我解决了问题:
cd $Android/Sdk/tools/lib64/libstdc++
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s /usr/lib64/libstdc++.so.6

这似乎创建了一个符号链接。这个解决方案来自https://code.google.com/p/android/issues/detail?id=197254#c23的第23行。
根据您的安装情况,您可能需要更改文件路径(即原始路径为ANDROID_HOME/android-sdk-linux_x86/,而我的安装路径只是Android/Sdk/)。

0

我使用的是Ubuntu 16.04和Android Studio 3。

ln -s $Android/Sdk/emulator/lib64/libstdc++/libstdc++.so.6.0  $Android/Sdk/tools/lib64/libstdc++ 

我在~/Android/Sdk/emulator/lib64/libstdc++/找到了我的libstdc++.so.6库文件,

但是Android Studio会在~/Android/Sdk/tools/lib64/libstdc++/中寻找。


0
在Debian Stretch(Android Studio 3.0.1 / Android模拟器27.1.12)上,我遇到了同样的问题,并应用了以下修复方法:
sudo apt-get install libstdc++6:amd64
cd ~/Android/Sdk/emulator/lib64/libstdc++
mkdir old
mv libstdc* old
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6

0

我在Ubuntu 16.04 LTS和Android Studio 2.3.2上遇到了完全相同的问题,通过在终端窗口中执行以下操作解决了该问题: (注意:我在其他地方看到过这个方法,但我记不清是在哪里看到的,所以无法给予原作者应有的荣誉)

sudo apt list "*nvidia-[0-9][0-9][0-9]"

我的返回结果如下: nividia-346 nividia-352 nividia-361 nividia-367 nividia-375

然后我对每个返回的结果都运行了以下操作:

sudo apt install nvidia-375
sudo apt install nvidia-367
sudo apt install nvidia-361
sudo apt install nvidia-352
sudo apt install nvidia-346

然后重新启动Ubuntu,一切正常。


我可以确认,使用Nvidia专有驱动程序而不是nouveau驱动程序会有所帮助,但您不必安装可用的每个Nvidia驱动程序版本。仅安装适用于您硬件配置的最新版本,否则可能会导致驱动程序混乱。 - sfera
警告:安装最新的Nvidia驱动程序(nvidia-384)在重启后导致我的屏幕变黑,必须从另一台机器上通过ssh登录并卸载此驱动程序才能正常启动(基于Ubuntu 16.04 LTS的KDE neon 5.12.2)。 - legolas108

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