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
en1
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.
Esto se soluciona en Android Emulator 27.2.9. Vea la primera solución que se enumera aquí: https://developer.android.com/studio/releases/emulator#fixes
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.
Tengo un error similar en Ubuntu 16.04 de 64 bits. Para mí, la solución de respuesta # 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++
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