Android studio buggy após a atualização para 16.10

31

Atualizei recentemente a partir do 16.04 LTS, onde meu estúdio android estava funcionando bem para 16.10, mas ao tentar executar meus emuladores avd, esse é o log de erros que eu recebo de volta

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: 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:  155 (GLX)
  Minor opcode of failed request:  6 (X_GLXIsDirect)
  Serial number of failed request:  55
  Current serial number in output stream:  54
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: 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:  155 (GLX)
  Minor opcode of failed r
user637425
fonte
é estúdio android neste caminho opt/android-studio?
Arduino_Sentinel
Isso acontece para mim no Ubuntu 17.04 também. A resposta do @ Arduino_Sentinel foi corrigida.
Rimian

Respostas:

49

Nas atualizações recentes do android studio, o google usa um libstdc++que é incompatível com o driver intel instalado no sistema

Você primeiro precisa instalar os seguintes pacotes, se não houver no sistema lib64stdc++6emesa-utils

sudo apt-get install lib64stdc++6 mesa-utils

Em seguida, faça o link simbólico das bibliotecas para o caminho das ferramentas do Android SDK

## For the /Sdk/tools path

cd ~/Android/Sdk/tools/lib64/libstdc++
# making a copy of the file
sudo mv libstdc++.so.6 libstdc++.so.6.og
# symlink
sudo ln -s /usr/lib64/libstdc++.so.6 ~/Android/Sdk/tools/lib64/libstdc++

## For the /Sdk/emulator path

cd ~/Android/Sdk/emulator/lib64/libstdc++
# making a copy of the file
sudo mv libstdc++.so.6 libstdc++.so.6.og 
# symlink
sudo ln -s /usr/lib64/libstdc++.so.6 ~/Android/Sdk/emulator/lib64/libstdc++
Arduino_Sentinel
fonte
12
Pasta foi ~/Android/Sdk/emulator/lib64/libstdc++para mim.
Kevin Brotcke
42

Eu também tive esse problema no Ubuntu 17.04 e aqui está o que eu fiz.

Edite seu .profileusando seu editor de texto favorito

atom ~/.profile

Anexe isso no final do arquivo

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

Fonte: Variável de ambiente do SDK do Android

jasperagrante
fonte
2
a melhor solução
Vladimir
Isso não funcionou no Ubuntu 17.10 com Android Studio 3.01. Acabei de renomear a pasta da biblioteca ~ / Android / Sdk / emulator / lib64 / lib / libstdc ++ e funcionou.
Vincent Gerris
Trabalhou para mim no Kubuntu 18.04. Muito obrigado!
Vanessa Deagan
18

Execute o emulador do terminal

emulator -use-system-libs -avd YOUR_VIRTUAL_DEVICE_NAME
Katenzo
fonte
1
Existe alguma maneira de tornar isso o padrão, então não preciso executá-lo em um terminal?
Karora
1
@karora see jasperagrante's answer
Altiano Gerung
@AltianoGerung sim, pois eu já embrulhar Android estúdio em um shell script que acabou definindo a variável de lá ...
Karora
4

Outra solução simples é renomear o libstdc ++ na pasta emulador no diretório sdk do Android. Ele fará o fallback para as bibliotecas do sistema (precisa ser instalado). Isso 'apenas funcionou' para mim no Ubuntu 17.10.

Vincent Gerris
fonte
Haha isso é ridículo!
23918 Kenneth Worden
O que você quer dizer :)? Pessoalmente, não entendo por que o Google o envia assim. A opção use-system-libs não funcionou para mim, por isso parece uma solução alternativa válida, basta fazer isso novamente quando o emulador for atualizado.
Vincent Gerris
2

Atualize o emulador.

Tools -> SDK Manager -> SDK Tools -> Android Emulator

insira a descrição da imagem aqui

Este é um bug que está sendo corrigido em 27.2.9.

A versão Linux do Android Emulator agora é construída usando uma moderna cadeia de ferramentas Clang C ++. Essa alteração corrige o problema do emulador falhar ao iniciar devido a erros libGL e libstdc ++.


FYI: A criação manual de links simbólicos não é uma boa ideia.

Definir ANDROID_EMULATOR_USE_SYSTEM_LIBSé uma abordagem melhor. No entanto, isso também não é necessário quando você pode apenas atualizar o emulador.

Gayan Weerakutti
fonte
1

Mudei a aceleração gráfica de auto / hardware para software. Os drivers que estão causando esse problema são necessários apenas para usar hardware real para aceleração de gráficos. A menos que você esteja trabalhando em um jogo ou outro software intensivo em gráficos, você realmente não precisa disso. Isso deve ser feito em cada anúncio, mas permanece definido depois de feito.

onde o que vem de
fonte
-1

Este link ajuda. Modifiquei a localização do libstdc ++., Com base na minha instalação do Ubuntu 17.10. O local do arquivo libstdc ++. So era diferente. Procure no seu computador libstdc ++.

Ubuntu 17.10 e Android Studio 3.1

cd /opt/android-sdk/emulator/lib64/libstdc++
mv libstdc++.so.6{,.bak}
mv libstdc++.so.6.0.19{,.bak}
ln -s /usr/lib/gcc/x86_64-linux-gnu/7/libstdc++.so 
Scott
fonte