web-dev-qa-db-fra.com

Erreur lors du lancement d'Android Studio AVD

J'ai un émulateur Nexus 6P API23 téléchargé sur mon ordinateur Ubuntu 15.10. Lorsque j'essaie de le lancer, il échoue et une boîte de dialogue s'ouvre et indique:

(Configuration AVD: API Nexus 6P 23 x86 - Graphiques 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

J'ai essayé d'autres DAV et ils ne fonctionnent pas.

24
Kevin Dixson

vous pouvez également utiliser "Logiciel" dans l'option Graphiques de performances émulées, dans les paramètres AVD

51
aoliva

J'ai eu la même erreur que vous et j'ai réussi à trouver une solution de contournement. Espérons que cela résoudra également votre problème.

Plutôt que de lancer l'émulateur depuis Android Studio, ouvrez le terminal et cd dans le répertoire tools avec votre répertoire Android SDK - le mien est ~/Android/Sdk/tools. A partir de là, lancez la commande: 

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 ./emulator -avd <insert avd name here>

Vous devriez maintenant pouvoir lancer votre application avec Android studio en appuyant sur la flèche verte et en sélectionnant l'émulateur que vous venez de démarrer.

Pour plus d’informations sur les raisons pour lesquelles cela fonctionne, allez ici

Modifier:

Après mûre réflexion, j'ai essayé ce script et il semble fonctionner pour vous permettre de démarrer l'émulateur dans Android Studio. Il remplace l'exécutable de l'émulateur par un script bash qui l'appelle comme ci-dessus. Vous devrez changer le chemin des outils au bon emplacement. Je suggère également de créer une copie de sauvegarde de votre répertoire tools au cas où quelque chose se passerait 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
14
sapensadler

Mon cas: je travaille avec Debian Jessie et Android Studio 2.2.3. Ma carte graphique est une ATI Radeon HD 6850 de Sapphire.

L'émulateur indique qu'un problème est survenu lors du chargement du pilote graphique ("erreur libGL: impossible de charger le pilote: r600_dri.so"). Comme il est expliqué ici , il semble que Google ait fourni avec Android Studio une ancienne version d’une bibliothèque (libstdc ++. So.6), et l’émulateur échoue lorsqu’il essaie d’utiliser la carte graphique. .

Solution? Très facile: utiliser les bibliothèques système au lieu de celles fournies dans Android Studio. Comment? Ajout de "-use-system-libs" à la fin de la commande. Alors:

./emulator -avd EMULATOR_NAME -netspeed full -netdelay none -use-system-libs

La solution définitive (si vous ne souhaitez pas utiliser le terminal) consiste à définir la variable d'environnement Android_EMULATOR_USE_SYSTEM_LIBS sur 1 pour votre utilisateur/système. Avec cette modification, lorsque vous exécutez l'émulateur dans Android Studio, il chargera également les bibliothèques système au lieu de celles empaquetées.

PS - Le moyen le plus simple que j’ai trouvé de définir la variable d’environnement, c’est de modifier le script qui lance Android Studio (studio.sh, dans mon cas, il est à l’intérieur de / opt/Android-stuido/bin), et ajoutez au début ceci:

export Android_EMULATOR_USE_SYSTEM_LIBS=1

UPDATE Décembre 2017: J'ai eu le même problème avec Debian Stretch et Android Studio 3.0.1 (même carte graphique). La même solution fonctionne pour moi.

7
Pablo Insua

Entrer ce qui suit dans le terminal (Ctrl-Alt-T) a résolu ceci pour moi:

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

Cela crée apparemment un lien symbolique. Cette solution provient de la ligne 23 de https://code.google.com/p/Android/issues/detail?id=197254#c23 .

Vous devrez peut-être modifier les chemins d'accès aux fichiers en fonction de votre installation (c'est-à-dire que l'original utilisait le chemin Android_HOME/Android-sdk-linux_x86/alors que mon installation était uniquement Android/Sdk /).

1
Concrete_Buddha

J'avais exactement le même problème sous Ubuntu 16.04 LTS et Android Studio 2.3.2 et j'ai résolu le problème en procédant comme suit dans une fenêtre de terminal: donc je ne peux pas donner de crédit où le crédit est dû)

Sudo apt list "*nvidia-[0-9][0-9][0-9]"

le mien est retourné:

J'ai ensuite exécuté ce qui suit pour chaque retour:

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

Ensuite, redémarrez Ubuntu et tout a bien fonctionné.

0
plowboy

J'étais Ubuntu 16.04 Android studio 3, 

ln -s $Android/Sdk/emulator/lib64/libstdc++/libstdc++.so.6.0  $Android/Sdk/tools/lib64/libstdc++ 

j'ai trouvé ma libstdc ++. so.6 dans ~/Android/Sdk/emulator/lib64/libstdc ++/

mais le studio Android trouvera ~/Android/Sdk/tools/lib64/libstdc ++/ 

0
cheng Hc

Sur Debian Stretch (Android Studio 3.0.1/Android Emulator 27.1.12), j’ai rencontré le même problème et appliqué le correctif suivant:

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
0
manimaul