No se puede iniciar el emulador en Linux (Ubuntu 15.10)


103

Intento iniciar el emulador pero sale en el registro:

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 arreglarlo? Leo temas con errores similares pero no me ayuda.


encuentre aquí una solución conveniente sin las líneas adicionales que se
refle

Respuestas:


79

Echa un vistazo a

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

en particular los ítems # 3 y # 19. Esta es una solución alternativa en lugar de una verdadera solución, pero me puso en movimiento de nuevo. Tendrá que ajustar el comando para:

  • la ubicación del libstdc++.so.6archivo en su sistema; solía locate libstdc++.so.6encontrar esto
  • la ruta al ejecutable del emulador
  • el nombre de tu emulador

entonces mi comando fue

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

Esto luego inicia el emulador, y puede seleccionarlo en el diálogo 'Selector de dispositivo' cuando ejecuta su aplicación.


¡Gracias! Pero en mi caso, el sistema operativo no ve el paquete fglrx aunque lo instalé y funcionó. Pero después de las actualizaciones del sistema obtuve este error. Reinstalé este paquete y volvió a funcionar :) Lo siento por el inglés.
Шах

La solución descrita en la publicación n. ° 23 del enlace permitió que mi emulador se iniciara en Ubuntu 16.04, pero la pantalla del emulador solo se muestra en negro.
dazza5000

5
cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 $ANDROID_HOME/tools/lib/libstdc++/libstdc++.so.6
Resolví

En caso de que sea útil, puede encontrar el nombre del emulador con:LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -list-avds
DaveyDaveDave

170

El uso de libstdc ++. So.6 que está disponible en su sistema en lugar del incluido con el sdk de Android resuelve este problema.

  • El emulador tiene un interruptor -use-system-libspara hacer esto.

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

  • Alternativamente, puede establecer la ANDROID_EMULATOR_USE_SYSTEM_LIBSvariable de entorno 1para su usuario / sistema. Esto tiene la ventaja de garantizar que el emulador funcionará incluso si lo inició desde Android Studio.

Más detalles: https://code.google.com/p/android/issues/detail?id=197254#c15


Y después de eso en tu Android Studio aparecerá un dispositivo conectado (en este caso Nexus_5_API_23) cuando intentes ejecutar tu aplicación.
Alejo Bernardin

3
Esta es la mejor respuesta en mi opinión, ya que el emulador se puede iniciar correctamente a través de un script de shell sin tener que mover o vincular las bibliotecas sdk existentes.
Potaito

19
en Ubuntu 16.10 export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1debe agregarse a$HOME/.profile
Greg Dan

opción desconocida: -use-system-libs :(
Jaroslav Záruba

1
@GregDan: o 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

ha funcionado para mi


1
Parece que tuve que instalar libstdc ++ y solo después de eso pude ejecutar el simulador. ¡Gracias por tu ayuda!
Pini Cheyni

6
my libstdc ++. so.6 como se encuentra en /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Joshua

2
@Joshua - Correcto. Para Ubuntu 17.10+, necesita lo siguiente para el último paso $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Timothy C. Quinn

Trabajó para mi. Sin embargo, me encantaría saber qué lo rompió.
Toby Wilson

Esta solución me funciona. El emulador se rompió después de la actualización de Ubuntu 16.04 a 18.04. ¡Gracias!
ruX

52

Tengo un error similar en Ubuntu 16.04 de 64 bits. Para mí, la respuesta n . ° 23 funciona muy bien https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter % 20Opened & 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++

Esto funcionó para mí. Sin embargo, es posible que deba buscar en diferentes directorios su sdk de Android. El mío fue encontrado en/home/daniel/Android/Sdk/tools/lib64/libstdc++
Daniel Levin

Sí, la ruta de la sección antes de "/ tools" puede variar según los nombres de usuario y la carpeta de instalación de Sdk.
luizMello

3
confirmar que funciona, en ubuntu xenial la ruta es
/usr/lib/x86_64-linux-gnu/libstdc++.so.6

gracias ... esta fue la solución también en ubuntu 16.10, la misma ruta que en el comentario anterior ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ~ / Android / Sdk / tools / lib64 / libstdc ++
Juan

29

Utilice "Software" en la opción Gráficos de rendimiento emulados, en la configuración de AVD. Solución muy sencilla.


Es simple pero es muy lento :)
Шах

Trabaja en ubuntu 16 de 64 bits, solo selecciona el menú desplegable :) 10x
Vasil Valchev

Esa fue la ÚNICA solución que funcionó para mí (Ubuntu 16.04LTS)
Feu

20

hago esto y 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

Tuve este error debido a mi controlador de video, lo reinstalé más tarde y todo comenzó a funcionar. Ya me olvidé de este error, es muy extraño que alguien todavía tenga problemas porque busca muchas soluciones, incluido este tema.
Шах

Acabo de tener este error hace 10 minutos :)
tetar

10

mejor ubique su sistema por defecto libstdc ++. so.6 usando el comando localizar libstdc ++. so.6

Y luego haga una copia de seguridad de la versión sdk de Android del archivo en ~ / Android / Sdk / tools / lib64 / libstdc ++ /

Y cree un enlace suave para libstdc ++. So.6 con el mismo nombre en la ruta anterior reemplazando el existente que apunta al archivo predeterminado en el sistema

De esta forma no es necesario reiniciar el emulador cada vez que se utiliza la línea de comandos.


9

Intente cambiar la opción de gráficos en la configuración del emulador: ingrese la descripción de la imagen aquí


0

También estaba teniendo muchos problemas para iniciar AVD en mi máquina. Luché con el uso de bibliotecas del sistema, la creación de enlaces simbólicos a bibliotecas locales, etc.

Lo que realmente me hizo funcionar fue instalar los controladores nvidia con

sudo apt install nvidia-340

Mi distribución (tenga en cuenta que no estoy 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

Asegúrese de verificar el paquete nvidia adecuado para usted, ya que Ubuntu ofrece diferentes sabores. Por ejemplo:

$ 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

Probé la lista en una estrategia ascendente, desde 361 hasta que encontré una que funcionó (340, en mi caso).

Espero que ayude.


0

En mi caso (Ubuntu 16.10 64-bit, Android Studio 2.3) las bibliotecas estaban ubicadas en otro lugar. Entonces los comandos son:

/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

Y ahora el emulador se inicia normalmente desde el administrador AVD.


0

Tuve problemas similares con el uso i965_dri.soy swrast_dri.sono pude cambiar a gráficos de software en la GUI.

Así que fui a la carpeta del emulador ( Show on Diskenlace en AVDM) y encontré elconfig.ini

Aquí acabo de cambiar la siguiente línea para evitar que use 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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.