Android studio buggy después de actualizar a 16.10

31

Recientemente actualicé de 16.04 LTS donde mi estudio de Android funcionaba bien a 16.10 pero al intentar ejecutar mis emuladores avd, este es el registro de errores que volví en su lugar

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
usuario637425
fuente
¿Es Android Studio en este camino opt/android-studio?
Arduino_Sentinel
Esto también me sucede en Ubuntu 17.04. La respuesta de @ Arduino_Sentinel lo arregló.
Rimian

Respuestas:

49

En las actualizaciones recientes de Android Studio, Google utiliza un sistema libstdc++que no es compatible con el controlador Intel instalado en el sistema.

Primero debe instalar los siguientes paquetes si no hay en el sistema lib64stdc++6ymesa-utils

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

Luego vincule las bibliotecas a la ruta de herramientas SDK de Android

## 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
fuente
12
La carpeta estaba ~/Android/Sdk/emulator/lib64/libstdc++por mí.
Kevin Brotcke
42

También tuve este problema en Ubuntu 17.04 y esto es lo que hice.

Edita tu .profileusando tu editor de texto favorito

atom ~/.profile

Agregue esto al final del archivo

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

Fuente: Variable de entorno del SDK de Android

jasperagrante
fuente
2
la mejor solución
Vladimir el
Esto no funcionó en Ubuntu 17.10 con Android Studio 3.01. Acabo de cambiar el nombre de la carpeta de la biblioteca ~ / Android / Sdk / emulator / lib64 / lib / libstdc ++ y funcionó.
Vincent Gerris
Trabajó para mí en Kubuntu 18.04. ¡Muchas gracias!
Vanessa Deagan
18

Ejecute el emulador desde la terminal

emulator -use-system-libs -avd YOUR_VIRTUAL_DEVICE_NAME
katenzo
fuente
1
¿Hay alguna forma de hacer que esto sea el predeterminado, por lo que no necesito ejecutarlo desde una terminal?
karora
1
@karora ver la respuesta de
jasperagrante
@AltianoGerung, sí, dado que ya envolví Android Studio en un script de shell, terminé configurando la variable allí ...
karora
4

Otra solución simple es cambiar el nombre de libstdc ++ en la carpeta del emulador en el directorio sdk de Android. Recurrirá a las bibliotecas del sistema (debe instalarse). Eso 'simplemente funcionó' para mí en Ubuntu 17.10.

Vincent Gerris
fuente
Jaja esto es ridículo!
Kenneth Worden el
Qué quieres decir :)? Personalmente, no entiendo por qué Google lo envía así. La opción use-system-libs no funcionó para mí, por lo que parece una solución válida, solo hay que hacerlo nuevamente cuando se actualiza el emulador.
Vincent Gerris
2

Actualiza el emulador.

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

ingrese la descripción de la imagen aquí

Este es un error que se está solucionando en 27.2.9.

La versión de Linux del emulador de Android ahora está construida utilizando una moderna cadena de herramientas Clang C ++. Este cambio soluciona el problema de que el emulador no se inicie debido a errores libGL y libstdc ++.


FYI: Por cierto, crear enlaces simbólicos manualmente no es una buena idea.

La configuración ANDROID_EMULATOR_USE_SYSTEM_LIBSes un mejor enfoque. Sin embargo, eso tampoco es necesario cuando solo puedes actualizar el emulador.

Gayan Weerakutti
fuente
1

Cambié la aceleración de gráficos de auto / hardware a software. Los controladores que causan este problema solo son necesarios para usar hardware real para la aceleración de gráficos. A menos que esté trabajando en un juego u otro software intensivo de gráficos, realmente no necesita esto. Esto tiene que hacerse en cada adv pero permanece fijo una vez hecho.

donde nos encontramos con ese nombre
fuente
-1

Este enlace ayuda. Modifiqué la ubicación de libstdc ++. Así que basé en mi instalación de Ubuntu 17.10. El libstdc ++. Por lo que la ubicación del archivo era diferente. Busque en su computadora libstdc ++. So

Ubuntu 17.10 y 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
fuente