Android Studio AVD错误启动

我在我的Ubuntu 15.10 PC上下载了一个Nexus 6P API23仿真器。 当我尝试启动它时,它会失败并popup一个对话框并说:

(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,但它们不起作用。

您还可以在AVD设置中的“仿真性能图形”选项中使用“软件”

我遇到了和你一样的错误,并设法find了解决方法。 希望这也将解决您的问题。

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

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 ./emulator -avd

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

有关其工作原理的更多信息,请访问此处

编辑:

经过一番思考之后,我尝试了这个脚本,它似乎有效,因此您可以在Android Studio中启动模拟器。 它用一个调用它的bash脚本替换模拟器可执行文件。 您需要将工具路径更改为正确的位置。 我还建议制作工具目录的备份副本,以防出现问题:

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

我的情况:我与Debian Jessie和Android Studio 2.2.3合作。 我的显卡是Sapphire的ATI Radeon HD 6850。

模拟器说加载图形驱动程序时出现问题(“ libGL错误:无法加载驱动程序:r600_dri.so ”)。 正如这里所解释的那样,似乎谷歌与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环境variables设置为1。 通过此更改,当您在Android Studio中运行模拟器时,它还将加载系统库而不是打包的。

PS – 我发现设置环境variables的最简单方法,就是修改启动Android Studio的脚本( studio.sh ,在我的情况下是在/ opt / android-stuido / bin里面 ),并在开头添加:

 export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1 

更新 2017年12月:我遇到了与Debian Stretch和Android Studio 3.0.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 /)。

我在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,一切正常。

我是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 ++ /中find了我的libstdc ++。so.6,

但android studio会find〜/ Android / Sdk / tools / lib64 / libstdc ++ /

在Debian Stretch(Android Studio 3.0.1 / Android Emulator 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