web-dev-qa-db-ja.com

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

それを修正するには?私は同じような誤りでトピックを読みましたが、それは私を助けません。

102
Шах

を見てみましょう

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

特に#3と#19の項目。これは本当の解決策ではなく回避策ですが、私は再び動いてしまいました。次のコマンドを調整する必要があります。

  • システム上のlibstdc++.so.6ファイルの場所 - これを見つけるためにlocate libstdc++.so.6を使用しました
  • エミュレータ実行可能ファイルへのパス
  • エミュレータの名前

だから私のコマンドは

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]ダイアログでそれを選択できます。

79
Mark

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環境変数を1に設定することもできます。これには、Android Studio内から起動してもエミュレータが動作することを確認するという利点があります。

詳細: https://code.google.com/p/Android/issues/detail?id=197254#c15

170
exception_noted
$ cd Android/Sdk/emulator/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6

それは私のために働いた

123
Mortada Jafar

私はUbuntu 16.04 64ビットで同様のエラーがあります。私のために答え#23解決策はうまくいく https://code.google.com/p/Android/issues/detail?can 2&start = 0#= 100&q =&colspec = ID%20ステータス%20優先度%20所有者%20要約%20初期設定%20レポーター%20オープン&groupby =&sort =&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++
51
luizMello

AVD設定のEmulated Performance Graphicsオプションで "Software"を使用してください。非常に単純な解決策.

29
saintjab

私はこれをやって、それは働いています

cd ~/Android/Sdk/emulator/lib64/libstdc++ 
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6
21
tetar

コマンドlocate libstdc ++。so.6を使用して、システムのデフォルトのlibstdc ++。so.6を見つけてください。

それから〜/ Android/Sdk/tools/lib64/libstdc ++ /にあるファイルのAndroid SDKバージョンのバックアップを取ります。

そしてlibstdc ++。so.6のソフトリンクを上記のパスにある同じ名前で作成し、システム内のデフォルトファイルを指す既存のものを置き換えます。

これにより、コマンドラインから毎回エミュレータを再起動する必要がなくなります。

10
BuzzR

エミュレータ設定でグラフィックオプションを変更してみてください。 enter image description here

9
Mohsen Kashi

私のマシンでAVDを起動するのにも多くの問題がありました。システムライブラリの使用、ローカルライブラリへのシンボリックリンクの作成などに苦しんでいます...

私にとって本当にうまくいったのは、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

Ubuntuはさまざまなフレーバーを提供しているので、自分に適したnvidiaパッケージを必ず確認してください。例えば:

$ 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

私は361からうまくいくものが見つかるまで(私の場合は340)、ボトムアップ戦略でリストをテストしました。

それが役立つことを願っています。

0

私の場合(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

そして今、エミュレータは通常AVDマネージャから起動されます。

0
porfirion

私はi965_dri.soswrast_dri.soを使うことで同様の問題を抱えていました、GUIでソフトウェアグラフィックスに変えることができませんでした。

そこで私はエミュレータのフォルダ(AVDMのShow on Diskリンク)に行き、config.iniを見つけました。

ここで私はGPUを使わないように次の行を変更しました。

hw.gpu.enabled=no
0
jkbadsberg

これはAndroid Emulator 27.2.9で修正されています。ここにリストされている最初の修正を参照してください。 https://developer.Android.com/studio/releases/emulator#fixes

0
Todd_Kopriva