升级到16.10后,Android Studio越野车


31

我最近从我的Android Studio工作正常的16.04 LTS升级到16.10,但是在尝试运行我的AVD模拟器时,这是我返回的错误日志

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: 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
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: 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 r

android studio在这条路上opt/android-studio吗?
Arduino_Sentinel,2017年

这对我来说也适用于Ubuntu 17.04。@Arduino_Sentinel的答案已解决。
Rimian

Answers:


49

在最近的android studio更新中,谷歌使用libstdc++与系统上安装的intel驱动程序不兼容的

你首先要如果系统没有安装以下软件包 lib64stdc++6mesa-utils

sudo apt-get install lib64stdc++6 mesa-utils

然后将库符号链接到android sdk工具路径

## For the /Sdk/tools path

cd ~/Android/Sdk/tools/lib64/libstdc++
# making a copy of the file
sudo mv libstdc++.so.6 libstdc++.so.6.og
# symlink
sudo ln -s /usr/lib64/libstdc++.so.6 ~/Android/Sdk/tools/lib64/libstdc++

## For the /Sdk/emulator path

cd ~/Android/Sdk/emulator/lib64/libstdc++
# making a copy of the file
sudo mv libstdc++.so.6 libstdc++.so.6.og 
# symlink
sudo ln -s /usr/lib64/libstdc++.so.6 ~/Android/Sdk/emulator/lib64/libstdc++

12
文件夹在~/Android/Sdk/emulator/lib64/libstdc++我身边。
凯文·布罗特克

42

我在Ubuntu 17.04上也遇到了这个问题,这就是我所做的。

您编辑.profile使用文本编辑器

atom ~/.profile

将此附加到文件末尾

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

来源:Android SDK环境变量


2
最好的解决方案
弗拉基米尔·

这在带有Android Studio 3.01的Ubuntu 17.10上不起作用。我只是将库文件夹重命名为〜/ Android / Sdk / emulator / lib64 / lib / libstdc ++,它可以正常工作。
文森特·格里斯

在Kubuntu 18.04上为我工作。非常感谢你!
Vanessa Deagan '18

18

从终端运行模拟器

emulator -use-system-libs -avd YOUR_VIRTUAL_DEVICE_NAME

1
有什么方法可以使它成为默认值,所以我不需要从终端运行它?
karora

1
@karora看到jasperagrante的答案
Altiano Gerung

@AltianoGerung是的,因为我已经将Android Studio包装在外壳脚本中,所以最终在其中设置了变量...
karora

4

另一个简单的解决方法是在Android sdk目录的emulator文件夹中重命名libstdc ++。它将回退到系统库(需要安装)。这对我在Ubuntu 17.10上“奏效”。


哈哈,这太荒谬了!
肯尼斯·沃登

你什么意思 :)?我个人不明白为什么Google会这样发布。use-system-libs选项对我不起作用,因此这似乎是一种有效的解决方法,当更新模拟器时,只需重新执行一次即可。
文森特·格里斯

2

更新模拟器。

Tools -> SDK Manager -> SDK Tools -> Android Emulator

在此处输入图片说明

此错误已在27.2.9中修复。

现在,使用现代的Clang C ++工具链构建了Linux版本的Android仿真器。此更改解决了由于libGL和libstdc ++错误导致仿真器无法启动的问题。


仅供参考: BTW手动创建符号链接不是一个好主意。

设置ANDROID_EMULATOR_USE_SYSTEM_LIBS是一种更好的方法。但是,当您仅更新模拟器时,也没有必要。


1

我将图形加速从自动/硬件切换为软件。导致此问题的驱动程序仅需要使用真正的硬件进行图形加速。除非您从事游戏或其他图形密集型软件的工作,否则您实际上并不需要它。这必须在每个副词上完成,但一旦完成就保持设置。


-1

链接帮助。我确实根据我的Ubuntu 17.10安装修改了libstdc ++。so的位置。libstdc ++。so文件位置不同。在计算机上搜索libstdc ++。so

Ubuntu 17.10和Android Studio 3.1

cd /opt/android-sdk/emulator/lib64/libstdc++
mv libstdc++.so.6{,.bak}
mv libstdc++.so.6.0.19{,.bak}
ln -s /usr/lib/gcc/x86_64-linux-gnu/7/libstdc++.so 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.