libros - Android Studio AVD error lanzando
manual android studio avanzado (7)
Tengo un emulador Nexus 6P API23 descargado en mi PC con Ubuntu 15.10. Cuando intento lanzarlo, falla y aparece un cuadro de diálogo que dice:
(AVD config: Nexus 6P API 23 x86 - Gráficos de Hardware-GLES 2.0)
Cannot launch AVD in emulator.
Output:
libGL error: unable to load driver: nouveau_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: nouveau
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: nouveau_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: nouveau
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: nouveau_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: nouveau
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
He probado otros AVD y no funcionan.
En Debian Stretch (Android Studio 3.0.1 / Android Emulator 27.1.12) experimenté este mismo problema y apliqué la siguiente solución:
sudo apt-get install libstdc++6:amd64
cd ~/Android/Sdk/emulator/lib64/libstdc++
mkdir old
mv libstdc* old
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
He tenido el mismo error que usted y he logrado encontrar una solución. Esperemos que esto también solucione su problema.
En lugar de iniciar el emulador desde Android Studio, abra el terminal y el CD en el directorio de herramientas dentro de su directorio SDK de Android; el mío es ~/Android/Sdk/tools
. Desde allí ejecuta el comando:
LD_PRELOAD=''/usr/$LIB/libstdc++.so.6'' DISPLAY=:0 ./emulator -avd <insert avd name here>
Ahora debería poder iniciar su aplicación con Android Studio presionando la flecha verde de ejecución y seleccionando el emulador que acaba de comenzar.
Para más información sobre por qué esto funciona, vaya here
Editar:
Después de pensar un poco más, probé este script y parece funcionar, para que pueda iniciar el emulador en Android Studio. Reemplaza el ejecutable del emulador con un script bash que lo llama como anteriormente. Tendrá que cambiar a la ruta de herramientas a la ubicación correcta. También sugiero hacer una copia de respaldo de su directorio de herramientas en caso de que algo salga mal:
#!/bin/bash
TOOLS_PATH=''/home/user/Android/Sdk/tools''
UNEXPANDED_LIB=''$LIB''
for emul in ${TOOLS_PATH}/em*
do
cp ${emul} ${emul}-orig
cat <<EOF > ${emul}
#!/bin/bash
LD_PRELOAD=''/usr/$UNEXPANDED_LIB/libstdc++.so.6'' ${emul}-orig "/$@"
EOF
done
Ingresando lo siguiente en la terminal (Ctrl-Alt-T) resolví esto por mí:
cd $Android/Sdk/tools/lib64/libstdc++
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s /usr/lib64/libstdc++.so.6
Esto aparentemente crea un enlace simbólico. Esta solución se tomó de la Línea 23 de https://code.google.com/p/android/issues/detail?id=197254#c23 .
Es posible que deba cambiar las rutas a los archivos dependiendo de su instalación (es decir, el original usó la ruta ANDROID_HOME / android-sdk-linux_x86 / mientras que mi instalación fue solo Android / Sdk /).
Mi caso: trabajo con Debian Jessie y Android Studio 2.2.3. Mi tarjeta gráfica es una ATI Radeon HD 6850 de Sapphire.
El emulador dice que hay un problema al cargar el controlador gráfico (" error libGL: no se puede cargar el controlador: r600_dri.so "). Como se explica here , parece que Google empaquetó con Android Studio una versión antigua de una biblioteca ( libstdc ++. So.6 ), y el emulador falla cuando intenta usar la tarjeta gráfica.
¿Solución? Muy fácil: utilizar las bibliotecas del sistema en lugar de las empaquetadas en Android Studio. ¿Cómo? Añadiendo "-use-system-libs" al final del comando. Asi que:
./emulator -avd EMULATOR_NAME -netspeed full -netdelay none -use-system-libs
La solución definitiva (si no desea utilizar el terminal) es establecer la variable de entorno ANDROID_EMULATOR_USE_SYSTEM_LIBS
en 1 para su usuario / sistema. Con este cambio, cuando ejecute el emulador en Android Studio, también cargará las bibliotecas del sistema en lugar de las empaquetadas.
PD: la forma más sencilla que encontré para establecer la variable de entorno, es modificar el script que ejecuta Android Studio ( studio.sh , en mi caso, está dentro de / opt / android-stuido / bin ), y agregarlo al principio. :
export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1
ACTUALIZACIÓN Diciembre de 2017: tuve el mismo problema con Debian Stretch y Android Studio 3.0.1 (la misma tarjeta gráfica). La misma solución funciona para mí.
También puede usar "Software" en la opción Emulated Performance Graphics, en la configuración de AVD
Tuve exactamente el mismo problema en Ubuntu 16.04 LTS y Android Studio 2.3.2 y resolví el problema haciendo lo siguiente en una ventana de terminal: (NOTA: Vi esto en otro lugar en línea pero no recuerdo dónde puedo hacerlo) no dar crédito cuando el crédito es debido)
sudo apt list "*nvidia-[0-9][0-9][0-9]"
mina devuelto: nividia-346 nividia-352 nividia-361 nividia-367 nividia-375
Luego corrí lo siguiente para cada uno que fue devuelto:
sudo apt install nvidia-375
sudo apt install nvidia-367
sudo apt install nvidia-361
sudo apt install nvidia-352
sudo apt install nvidia-346
Luego reinicie Ubuntu y todo funcionó bien.
Yo era ubuntu 16.04 Android Studio 3,
ln -s $Android/Sdk/emulator/lib64/libstdc++/libstdc++.so.6.0 $Android/Sdk/tools/lib64/libstdc++
Encontré mi libstdc ++. so.6 en ~ / Android / Sdk / emulator / lib64 / libstdc ++ / ,
pero Android Studio encontrará ~ / Android / Sdk / tools / lib64 / libstdc ++ /