android-emulator ubuntu-15.10

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



android-emulator ubuntu-15.10 (13)

Intento iniciar el emulador pero sale al 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.


$ 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


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 nuevamente. Tendrá que ajustar el comando para:

  • la ubicación del archivo libstdc++.so.6 en su sistema: utilicé locate libstdc++.so.6 para encontrar esto
  • la ruta al ejecutable del emulador
  • el nombre de tu emulador

entonces mi comando era

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 inicia el emulador y puede seleccionarlo en el cuadro de diálogo ''Selector de dispositivos'' cuando ejecuta su aplicación.


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

  • El emulador tiene un switch -use-system-libs para hacer esto.

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

  • Alternativamente, puede establecer la variable de entorno ANDROID_EMULATOR_USE_SYSTEM_LIBS en 1 para su usuario / sistema. Esto tiene la ventaja de asegurarse de que el emulador funcionará incluso si lo lanzó desde Android Studio.

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


En mi caso (Ubuntu 16.10 de 64 bits, Android Studio 2.3), las bibliotecas se encontraban 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 desde el administrador AVD normalmente.



Intente cambiar la opción de gráficos en la configuración del emulador:


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

Lo que realmente hizo que funcionara para mí fue instalar los controladores de 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 de 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 de abajo hacia arriba, desde 361 hasta que encontré una que funcionó (340, en mi caso).

Espero que ayude.



Tuve problemas similares con el uso de i965_dri.so y swrast_dri.so , no pude cambiar a gráficos de software en la GUI.

Así que fui a la carpeta del emulador ( Show on Disk enlace del Show on Disk en AVDM) y encontré el config.ini

Aquí acabo de cambiar la siguiente línea para evitar que use GPU:

hw.gpu.enabled=no


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


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


localice mejor 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 de Android SDK 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 manera, no necesitamos reiniciar el emulador cada vez desde la línea de comandos.


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

me ha funcionado