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


103

Tento iniciar o emulador, mas a saída é 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 leio tópicos com erros semelhantes, mas isso não me ajuda.


encontre aqui uma solução conveniente sem os extralines fornecidos nesta resposta: [ github.com/rimian/cordova-ember-android]
— refle de

Respostas:


79

Dê uma olhada em

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

em itens específicos # 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 libstdc++.so.6arquivo em seu sistema - costumava locate libstdc++.so.6encontrar este
  • 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

Isso, então, inicia o emulador e você pode selecioná-lo na caixa de diálogo 'Seletor de dispositivo' ao executar seu aplicativo.


Obrigado! Mas no meu caso o SO não vê o pacote fglrx embora eu o instalei e funcionou. Mas depois de atualizações do sistema, recebi esse bug. Reinstalei esse pacote e ele voltou a funcionar :) Desculpe pelo inglês.
— Шах,

A correção descrita na postagem 23 do link permitiu que meu emulador fosse iniciado no Ubuntu 16.04, mas a tela do emulador só fica preta.
— dazza5000

5
Eu resolvi o problema da maneira mais feia: cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 $ANDROID_HOME/tools/lib/libstdc++/libstdc++.so.6
— Yu Jiaao

Caso seja útil, você pode encontrar o nome do emulador com:LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -list-avds
— DaveyDaveDave

170

Usar o libstdc ++. So.6 que está disponível em seu sistema, em vez do pacote com o SDK do Android, resolve esse problema.

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

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

  • Como alternativa, você pode definir a ANDROID_EMULATOR_USE_SYSTEM_LIBSvariável de ambiente para 1para seu usuário / sistema. Isso tem a vantagem de garantir que o emulador funcione, mesmo que você o inicie de dentro do Android Studio.

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


E depois disso em seu Android Studio aparecerá um dispositivo conectado (neste caso Nexus_5_API_23) quando você tentar executar seu aplicativo.
— Alejo Bernardin

3
Esta é a melhor resposta, pois o emulador pode ser iniciado corretamente por meio de um script de shell sem ter que mover ou vincular as bibliotecas SDK existentes.
— Potaito 02 de

19
no Ubuntu 16.10 export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1deve ser adicionado a$HOME/.profile
— Greg Dan

opção desconhecida: -use-system-libs :(
— Jaroslav Záruba

1
@GregDan: ou para/etc/environment
— serv-inc

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

funcionou para mim


1
Parece que tive que instalar o libstdc ++ e só depois disso consegui rodar o simulador, obrigado pela ajuda!
— Pini Cheyni de

6
my libstdc ++. so.6 conforme localizado em /usr/lib/x86_64-linux-gnu/libstdc++.so.6
— Joshua

2
@Joshua - correto. Para Ubuntu 17.10+, você precisa do seguinte para a última etapa $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
— Timothy C. Quinn

Funcionou para mim. Eu adoraria saber o que o quebrou.
— Toby Wilson

Esta solução funciona para mim. O emulador quebrou após a atualização do Ubuntu 16.04 para 18.04. Obrigado!
— ruX

52

Eu tenho um erro semelhante no Ubuntu 16.04 de 64 bits. Para mim, a resposta # 23 solução funciona muito bem https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter % 20Aberto & 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++

Isso funcionou para mim. Você pode ter que procurar em diretórios diferentes para o seu SDK do Android. O meu foi encontrado em/home/daniel/Android/Sdk/tools/lib64/libstdc++
— Daniel Levin

Sim, o caminho da seção antes de "/ tools" pode variar dependendo dos nomes de usuário e da pasta de instalação SDK.
— luizMello

3
confirme o funcionamento, no ubuntu xenial o caminho é /usr/lib/x86_64-linux-gnu/libstdc++.so.6
— arisalexis

obrigado .... essa também era a solução no ubuntu 16.10, mesmo caminho do comentário acima ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ~ / Android / Sdk / tools / lib64 / libstdc ++
— Juan

29

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


É simples, mas muito lento :)
— --ах

Trabalhe no ubuntu 16 64 bits, basta selecionar o menu suspenso :) 10x
— Vasil Valchev

Essa foi a ÚNICA solução que funcionou para mim (Ubuntu 16.04LTS)
— Feu

20

eu faço isso e está funcionando

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

Tive esse bug devido ao driver de vídeo, reinstalei depois e tudo começou a funcionar. Já esqueci desse bug, é muito estranho que alguém ainda tenha problemas pq em buscar muitas soluções inclusive nesse tópico.
— Шах

Acabei de ter esse bug há 10 minutos :)
— tetar

10

localize melhor o libstdc ++. so.6 padrão do sistema usando o comando locate libstdc ++. so.6

E, em seguida, faça um backup da versão SDK do Android do arquivo em ~ / Android / Sdk / tools / lib64 / libstdc ++ /

E crie um soft link para libstdc ++. So.6 com o mesmo nome no caminho acima, substituindo o existente apontando para o arquivo padrão no sistema

Dessa forma, não precisamos reiniciar o emulador todas as vezes na linha de comando.


9

Tente alterar a opção de gráficos nas configurações do emulador: insira a descrição da imagem aqui


0

Eu também estava tendo muitos problemas para iniciar o AVD em minha máquina. Tive dificuldade em usar bibliotecas de sistema, criar links simbólicos para bibliotecas locais, etc ...

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

sudo apt install nvidia-340

Minha distro (observe que não estou usando 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 funcionou (340, no meu caso).

Espero que ajude.


0

No meu caso (Ubuntu 16.10 64 bits, Android Studio 2.3), as bibliotecas estavam localizadas em outro lugar. Portanto, 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 é iniciado normalmente a partir do gerenciador de AVD.


0

Tive problemas semelhantes ao usar i965_dri.soe swrast_dri.sonão consegui mudar para gráficos de software na GUI.

Então fui até a pasta do emulador ( Show on Disklink no AVDM) e encontrei oconfig.ini

Aqui, acabei de alterar a seguinte linha para impedi-lo de usar a GPU:

hw.gpu.enabled=no


-1

$ 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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.