web-dev-qa-db-fra.com

Impossible de lancer l'émulateur sous Linux (Ubuntu 15.10)

J'essaie de lancer l'émulateur, mais le résultat est enregistré dans le journal:

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

Comment le réparer? Je lis des sujets avec des erreurs similaires mais cela ne m'aide pas.

102
Шах

Jeter un coup d'œil à

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

en particulier les articles 3 et 19. Il s’agit d’une solution de contournement plutôt que d’une véritable solution, mais cela m’a encore fait avancer. Vous devrez ajuster la commande pour:

  • l'emplacement du fichier libstdc++.so.6 sur votre système - j'ai utilisé locate libstdc++.so.6 pour le trouver
  • le chemin de l'exécutable de l'émulateur
  • le nom de votre émulateur

donc ma commande était

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

Ceci lance ensuite l'émulateur et vous pouvez le sélectionner dans la boîte de dialogue 'Sélecteur de périphérique' lorsque vous exécutez votre application.

79
Mark

L'utilisation de libstdc ++. So.6 disponible sur votre système au lieu de celui fourni avec le sdk Android résout ce problème. 

  • L'émulateur a un commutateur -use-system-libs pour le faire. 

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

  • Vous pouvez également définir la variable d'environnement Android_EMULATOR_USE_SYSTEM_LIBS sur 1 pour votre utilisateur/système. Cela permet de s'assurer que l'émulateur fonctionnera même si vous l'avez lancé à partir d'Android Studio.

Plus de détails: https://code.google.com/p/Android/issues/detail?id=197254#c15

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

ça a fonctionné pour moi

123
Mortada Jafar

J'ai une erreur similaire dans Ubuntu 16.04 64 bits . Pour moi, la solution # 23 fonctionne très bien https://code.google.com/p/Android/issues/detail ? can = 2 & start = 0 & num = 100 & q = & colspec = ID% 20Status% 20Priority% 20Owner% 20Summary% 20Stars% 20Reporter% 20Ouvré & 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++
51
luizMello

Utilisez "Logiciel" dans l'option Graphiques de performances émulées, dans les paramètres AVD. Solution très simple.

29
saintjab

je fais ça et ça marche 

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
20
tetar

localisez mieux votre système par défaut libstdc ++. so.6 à l’aide de la commande localisez libstdc ++. so.6

Et ensuite, sauvegardez la version sdk Android du fichier dans ~/Android/Sdk/tools/lib64/libstdc ++ /

Et créez un lien symbolique pour libstdc ++. So.6 avec le même nom dans le chemin ci-dessus en remplaçant celui qui pointe vers le fichier par défaut du système.

De cette façon, nous n'avons pas besoin de redémarrer l'émulateur à chaque fois depuis la ligne de commande.

10
BuzzR

Essayez de changer l’option graphique dans les paramètres de l’émulateur:  enter image description here

8
Mohsen Kashi

J'avais aussi beaucoup de problèmes pour lancer AVD sur ma machine. Lutte contre l'utilisation de bibliothèques système, la création de liens symboliques vers des bibliothèques locales, etc.

Ce qui a vraiment fonctionné pour moi a été d’installer les pilotes nvidia avec

Sudo apt install nvidia-340

Ma distribution (note: je n'utilise pas 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

Assurez-vous de cocher le paquet nvidia qui vous convient, car Ubuntu propose différentes saveurs. Par exemple:

$ 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

J'ai testé la liste dans une stratégie ascendante, de 361 jusqu'à ce que j'en trouve une qui fonctionne (340 dans mon cas).

J'espère que cela pourra aider.

0
Alexandre Schmidt

Dans mon cas (Ubuntu 16.10 64 bits, Android Studio 2.3), les bibliothèques étaient situées à un autre endroit. Donc les commandes sont:

/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

Et maintenant, l'émulateur est lancé normalement à partir du gestionnaire AVD.

0
porfirion

J'ai eu des problèmes similaires avec l'utilisation de i965_dri.so et swrast_dri.so, je ne pouvais pas passer aux graphiques de logiciel dans l'interface graphique.

Alors je suis allé dans le dossier de l'émulateur (lien Show on Disk dans AVDM) et j'ai trouvé le config.ini

Ici, je viens de changer la ligne suivante pour l'empêcher d'utiliser GPU:

hw.gpu.enabled=no
0
jkbadsberg

Ceci est corrigé dans Android Emulator 27.2.9. Voir le premier correctif répertorié ici: https://developer.Android.com/studio/releases/emulator#fixes

0
Todd_Kopriva