起因

一直都是用着 Genymotion 的我
今天突然想看看新版 AVD 变成什么样了 (=゚ω゚)=

过程

愉快的打开 AVD ,新建虚拟设备,无脑的下一步,下一步,完成,一切顺利( flag),但是当我点击运行的时候,duang~!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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)
emulator: WARNING: VM heap size set below hardware specified minimum of 228MB
Major opcode of failed request: 155 (GLX)
emulator: WARNING: Setting VM heap size to 384MB
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 支持硬件渲染啦!
坏消息:Linux 上的各种残念的显卡问题……

好吧,那么再 Google 一下,找到了这个 issue

解决方法

进入到这个目录下(ANDROID_HOMEAndroid SDK 目录):
cd $ANDROID_HOME/android-sdk-linux_x86/tools/lib64/libstdc++

先备份就的 libstdc++.so.6 文件:
mv libstdc++.so.6 libstdc++.so.6.bak

然后建立一个软链接:
ln -s /usr/lib64/libstdc++.so.6 $ANDROID_HOME/android-sdk-linux_x86/tools/lib64/libstdc++

再然后就可以顺利运行啦