環境
- Ubuntu16.10
- AndroidStudio v2.2.3
症状
- エミュレータ起動時にlibGLエラーが発生する。
- i965_dri.soがロードできない云々のエラーがでる
こんなやつ
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: swrast_dri.so
libGL error: failed to load driver: swrast
X Error of failed request: GLXBadContext
Major opcode of failed request: 154 (GLX)
Minor opcode of failed request: 6 (X_GLXIsDirect)
Serial number of failed request: 49
\(^o^)/
\(^o^)/
\(^o^)/
調査
i965_dri.soで検索したらarchlinuxのフォーラムにて解決されてた。
https://bbs.archlinux.org/viewtopic.php?id=213192
ちなみに、UbuntuとかCentOSとかarchとかで問題が発生しているようなので、Linux全般で往々にして発生する可能性がありそうですね。
原因
https://developer.android.com/studio/install.html
AndroidStudioをダウンロードしたときに表示されるインストール手順に従ってもこの問題は発生すると思われる。
Android/sdk/tool/lib64/libstdc++.so.6
をAndroidStudioはエミュレータ起動時に見に行くが、本来見て欲しいのは公式手順にしたがって自分でインストールした/usr/lib32/libstdc++.so.6
公式手順でインストールしたライブラリを見に行ってくれていないのが原因。なのでリンクを貼り直すことで解決できるようです。
解決策
一応Ubuntuを対象に書くけども、他のやつでも多分大丈夫。
まずは念の為公式手順にしたがってインストールしとく。
以下AndroidStudioから抜粋
注: 64 ビット版の Ubuntu をご利用の場合は、以下のコマンドで 32 ビット用のライブラリをいくつかインストールする必要があります。
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2.1.0 lib32stdc++6
上のやつ、たぶんエラーで止まると思うけど、すんなり入るやつだけ入れとけば大丈夫だと思われる。
コマンドでインストールされているかを確認。
ls /usr/lib32/libstdc++.so.6
もしくはこっち
ls /usr/lib/libstdc**.so.6
存在を確認したら、lnコマンドでリンクを貼ります。
オプション-sfをつけてください。
ln -sf /usr/lib32/libstdc++.so.6 ~/Android/sdk/tools/lib64/libstdc++/libstdc++.so.6
環境によって微妙に位置が違うっぽいので、コピペせずに確認しながらやったほうがよか。
起動してみると動くと思います。もしかしたらデバイスを作成し直すかAndroidStudioを再起動したほうがいいかもしれないですが、しなくても動いたんでいけると思います。
所感
はじめての投稿でどきどき。