繁体   English   中英

Android Studio AVD错误启动

[英]Android Studio AVD error launching

我在我的Ubuntu 15.10 PC上下载了一个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,但它们无法正常工作。

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

我遇到了与您相同的错误,并设法找到了解决方法。 希望这也将解决您的问题。

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

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 ./emulator -avd <insert avd name here>

您现在应该可以通过按下绿色运行箭头并选择刚刚启动的模拟器来启动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 <<EOF > ${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环境变量设置为1。 通过此更改,当您在Android Studio中运行模拟器时,它还将加载系统库而不是打包。

PS - 我发现设置环境变量的最简单方法,就是修改启动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 ++ /中找到了我的libstdc ++。so.6,

但android studio会发现〜/ 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM