无法在Linux上启动模拟器(Ubuntu 15.10)

我尝试启动模拟器,但输出到日志:

libGL error: unable to load driver: r600_dri.so libGL error: driver pointer missing libGL error: failed to load driver: r600 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: r600_dri.so libGL error: driver pointer missing libGL error: failed to load driver: r600 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: r600_dri.so libGL error: driver pointer missing libGL error: failed to load driver: r600 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 emulator: WARNING: Increasing RAM size to 1GB 

如何解决它? 我读了类似的错误的主题,但它不帮助我。

看一眼

https://code.google.com/p/android/issues/detail?id=197254

特别是项目#3和#19。 这是一个解决方法,而不是一个真正的解决scheme,但它让我再次移动。 您将不得不调整以下命令:

  • libstdc++.so.6文件在你系统上的位置 – 我用locate libstdc++.so.6find这个
  • 模拟器可执行文件的path
  • 你的模拟器的名字

所以我的命令是

 LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -netdelay none -netspeed full -avd Nexus_5_API_21 

然后启动模拟器,当你运行你的应用程序时,你可以在“Device Chooser”对话框中select它。

使用系统中可用的libstdc ++。so.6而不是android sdk捆绑的libstdc ++。so.6解决了这个问题。

  • 模拟器有一个开关-use-system-libs来做到这一点。

    ~/Android/Sdk/tools/emulator -avd Nexus_5_API_23 -use-system-libs

  • 或者,您可以为您的用户/系统设置ANDROID_EMULATOR_USE_SYSTEM_LIBS环境variables为1 。 这有利于确保模拟器即使从Android Studio中启动也能正常工作。

更多详情: https : //code.google.com/p/android/issues/detail?id=197254#c15

我在Ubuntu 16.04 64位有一个类似的错误。 对我来说, #23解决scheme的效果非常好https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter %20Opened&GROUPBY =&sorting=&ID = 197254

 $ cd $ANDROID_HOME/android-sdk-linux_x86/tools/lib64/libstdc++ $ mv libstdc++.so.6 libstdc++.so.6.bak $ ln -s /usr/lib64/libstdc++.so.6 $ANDROID_HOME/android-sdk-linux_x86/tools/lib64/libstdc++ 
 $ cd Android/Sdk/emulator/lib64/libstdc++ $ mv libstdc++.so.6 libstdc++.so.6.bak $ ln -s /usr/lib64/libstdc++.so.6 

这是为我工作

在AVD设置中使用仿真性能graphics选项中的“软件”。 很简单的解决scheme

使用命令locate libstdc ++。so.6来更好地定位系统默认的libstdc ++。so.6

然后在〜/ Android / Sdk / tools / lib64 / libstdc ++ /下取得android sdk版本的文件,

然后在上面的path中为libstdc ++。so.6创build一个软链接,replace指向系统中默认文件的现有path

这样我们就不需要每次从命令行重新启动模拟器。

尝试更改模拟器设置中的graphics选项: 在这里输入图像描述

在我的机器上启动AVD也遇到了很多问题。 使用系统库,创build符号链接到本地​​库,等等…

真正为我工作的是安装nvidia驱动程序

 sudo apt install nvidia-340 

我的发行版(注意我没有使用Ubuntu 15.10):

 $ uname -a Linux ruapehu 4.4.0-38-generic #57-Ubuntu SMP Tue Sep 6 15:42:33 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/issue Ubuntu 16.04.1 LTS \n \l 

确保你检查适合你的nvidia软件包,因为Ubuntu提供了不同的风格。 例如:

 $ sudo apt list "nvidia-[0-9][0-9][0-9]" Listing... Done nvidia-304/xenial 304.131-0ubuntu3 amd64 nvidia-331/xenial 340.96-0ubuntu3 amd64 nvidia-340/xenial,now 340.96-0ubuntu3 amd64 [installed] nvidia-346/xenial 352.63-0ubuntu3 amd64 nvidia-352/xenial 361.42-0ubuntu2 amd64 nvidia-361/xenial,now 361.42-0ubuntu2 amd64 

我从一个自下而上的策略testing了这个列表,从361开始,直到我find一个工作(我的情况是340)。

希望有所帮助。

在我的情况下(Ubuntu 16.10 64位,Android Studio 2.3)库位于另一个地方。 所以命令是:

 /home/myusername/Android/Sdk/emulator/lib64/libstdc++ ➜ libstdc++ ll total 9,3M -rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6 -rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.0.18 ➜ libstdc++ mv libstdc++.so.6 libstdc++.so.6.bak ➜ libstdc++ mv libstdc++.so.6.0.18 libstdc++.so.6.0.18.bak ➜ libstdc++ ln -s /usr/lib32/libstdc++.so.6 /home/myusername/Android/Sdk/emulator/lib64/libstdc++ ➜ libstdc++ ln -s /usr/lib32/libstdc++.so.6.0.22 /home/myusername/Android/Sdk/emulator/lib64/libstdc++ ➜ libstdc++ ll total 9,3M lrwxrwxrwx 1 myusername myusername 25 мар 29 13:18 libstdc++.so.6 -> /usr/lib32/libstdc++.so.6 -rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.0.18.bak lrwxrwxrwx 1 myusername myusername 30 мар 29 13:19 libstdc++.so.6.0.22 -> /usr/lib32/libstdc++.so.6.0.22 -rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.bak 

现在仿真器正常从AVDpipe理器启动。

我有使用i965_dri.soswrast_dri.so类似的问题,我无法在GUI中更改为软件graphics。

所以我去了模拟器的文件夹( Show on Disk在AVDM Show on Disk链接),并find了config.ini

在这里,我只是改变了下面一行来阻止它使用GPU:

 hw.gpu.enabled=no