android emulator - Não é possível iniciar o emulador no Linux(Ubuntu 15.10)




android-emulator ubuntu-15.10 (9)

Eu tento lançar o emulador, mas ele sai no log:

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

Como corrigi-lo? Eu li tópicos com erros semelhantes, mas isso não me ajuda.


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


Dê uma olhada

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

em particular os itens 3 e 19. Esta é uma solução alternativa em vez de uma solução verdadeira, mas me fez mover novamente. Você terá que ajustar o comando para:

  • a localização do arquivo libstdc++.so.6 em seu sistema - eu usei locate libstdc++.so.6 para localizar
  • o caminho para o executável do emulador
  • o nome do seu emulador

então meu comando foi

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

Em seguida, ele inicia o emulador e você pode selecioná-lo na caixa de diálogo "Seletor de dispositivos" ao executar o aplicativo.


Eu também estava tendo muitos problemas para iniciar o AVD na minha máquina. Lutou com o uso de libs do sistema, criando links simbólicos para bibliotecas locais, etc ...

O que realmente fez funcionar para mim foi instalar os drivers nvidia com

sudo apt install nvidia-340

Minha distro (note que não estou usando o 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

Certifique-se de verificar o pacote nvidia adequado para você, pois o Ubuntu oferece diferentes sabores. Por exemplo:

$ 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

Testei a lista em uma estratégia de baixo para cima, de 361 até encontrar uma que funcionasse (340, no meu caso).

Espero que ajude.




No meu caso (Ubuntu 16.10 64-bit, Android Studio 2.3), as bibliotecas estavam localizadas em outro lugar. Então os comandos são:

/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

E agora o emulador é lançado do gerenciador AVD normalmente.


Usando o libstdc ++. So.6 que está disponível em seu sistema, em vez daquele fornecido com o sdk do Android, resolve esse problema.

  • O emulador tem um switch -use-system-libs para fazer isso.

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

  • Alternativamente, você pode definir a variável de ambiente ANDROID_EMULATOR_USE_SYSTEM_LIBS como 1 para seu usuário / sistema. Isso tem a vantagem de garantir que o emulador funcione mesmo que você o inicie no Android Studio.

Mais detalhes: https://code.google.com/p/android/issues/detail?id=197254#c15


Use "Software" na opção Emulated Performance Graphics, nas configurações do AVD. Solução muito simples.


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

funcionou para mim





ubuntu-15.10