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

103

J'essaye de lancer l'émulateur mais il sort 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? J'ai lu des sujets avec des erreurs similaires mais cela ne m'aide pas.

Шах
la source
trouvez ici une solution pratique sans les extralines données dans cette réponse: [ github.com/rimian/cordova-ember-android]
refle

Réponses:

79

Jeter un coup d'œil à

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

en particulier les points 3 et 19. C'est une solution de contournement plutôt qu'une vraie solution, mais cela m'a fait bouger à nouveau. Vous devrez ajuster la commande pour:

  • l'emplacement du libstdc++.so.6fichier sur votre système - j'avais l'habitude locate libstdc++.so.6de le trouver
  • le chemin vers 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

Cela 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.

marque
la source
Je vous remercie! Mais dans mon cas, le système d'exploitation ne voit pas le package fglrx bien que je l'ai installé et que cela fonctionne. Mais après les mises à jour du système, j'ai eu ce bogue. J'ai réinstallé ce package et il est redevenu opérationnel :) Désolé pour l'anglais.
Шах
Le correctif décrit dans le post # 23 à partir du lien a permis à mon émulateur de se lancer sur Ubuntu 16.04, mais l'écran de l'émulateur n'affiche que du noir.
dazza5000
5
J'ai résolu le problème de la manière laide: cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 $ANDROID_HOME/tools/lib/libstdc++/libstdc++.so.6
Yu Jiaao
Au cas où cela LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -list-avds
serait
170

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

  • L'émulateur a un commutateur -use-system-libspour ce faire.

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

  • Vous pouvez également définir la ANDROID_EMULATOR_USE_SYSTEM_LIBSvariable d'environnement sur 1pour votre utilisateur / système. Cela a l'avantage de garantir que l'émulateur fonctionnera même si vous l'avez lancé depuis Android Studio.

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

exception_noted
la source
Et après cela, dans votre Android Studio apparaîtra un appareil connecté (dans ce cas Nexus_5_API_23) lorsque vous essayez d'exécuter votre application.
Alejo Bernardin
3
C'est la meilleure réponse imo car l'émulateur peut être lancé correctement via un script shell sans avoir à déplacer ou lier les bibliothèques sdk existantes.
Potaito
19
sur Ubuntu 16.10 export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1doit être ajouté à$HOME/.profile
Greg Dan
option inconnue: -use-system-libs :(
Jaroslav Záruba
1
@GregDan: ou à/etc/environment
serv-inc
123
$ cd Android/Sdk/emulator/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6

ça a marché pour moi

Mortada Jafar
la source
1
Il semble que j'ai dû installer le libstdc ++ et seulement après cela, j'ai pu exécuter le simulateur, merci pour votre aide!
Pini Cheyni
6
mon libstdc ++. so.6 situé dans /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Joshua
2
@Joshua - Correct. Pour Ubuntu 17.10+, vous avez besoin des éléments suivants pour la dernière étape $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Timothy C. Quinn
A travaillé pour moi. J'adorerais savoir ce qui l'a cassé.
Toby Wilson
Cette solution fonctionne pour moi. L'émulateur est tombé en panne après la mise à jour d'Ubuntu 16.04 vers 18.04. Merci!
ruX
52

J'ai une erreur similaire dans Ubuntu 16.04 64 bits. Pour moi, la solution de réponse n ° 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 % 20Open & 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++
luizMello
la source
Cela a fonctionné pour moi. Vous devrez peut-être chercher dans différents répertoires pour votre sdk Android. Le mien a été trouvé à/home/daniel/Android/Sdk/tools/lib64/libstdc++
Daniel Levin le
Oui, le chemin de la section avant "/ tools" peut varier en fonction des noms d'utilisateur et du dossier d'installation de Sdk.
luizMello
3
confirmez le fonctionnement, dans ubuntu xenial, le chemin est /usr/lib/x86_64-linux-gnu/libstdc++.so.6
arisalexis
merci .... c'était aussi la solution dans ubuntu 16.10, même chemin que dans le commentaire ci-dessus ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ~ / Android / Sdk / tools / lib64 / libstdc ++
Juan
29

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

Saintjab
la source
C'est simple mais c'est très lent :)
Шах
Travaillez sur ubuntu 16 64bit, sélectionnez simplement le menu déroulant :) 10x
Vasil Valchev
C'était la SEULE solution qui fonctionnait pour moi (Ubuntu 16.04LTS)
Feu
20

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
tétar
la source
J'ai eu ce bug à cause de mon pilote vidéo, je l'ai réinstallé plus tard et tout a commencé à fonctionner. J'ai déjà oublié ce bug, c'est très étrange que quelqu'un ait encore des problèmes car à la recherche de nombreuses solutions, y compris ce sujet.
Шах
je viens d'avoir ce bug il y a 10 min :)
tétar
10

mieux localiser votre système par défaut libstdc ++. so.6 en utilisant la commande Locate libstdc ++. so.6

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

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

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

BuzzR
la source
9

Essayez de changer l'option graphique dans les paramètres de l'émulateur: entrez la description de l'image ici

Mohsen Kashi
la source
0

J'avais également beaucoup de problèmes pour lancer AVD sur ma machine. Vous avez du mal à utiliser les bibliothèques système, à créer des liens symboliques vers des bibliothèques locales, etc.

Ce qui a vraiment fait que cela a fonctionné pour moi a été d'installer les pilotes nvidia avec

sudo apt install nvidia-340

Ma distribution (notez que 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 vérifier le package 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 fonctionnait (340, dans mon cas).

J'espère que cela pourra aider.

Alexandre Schmidt
la source
0

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

/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é à partir du gestionnaire AVD normalement.

porfirion
la source
0

J'ai eu des problèmes similaires avec l'utilisation i965_dri.soet swrast_dri.soje n'ai pas pu passer aux graphismes logiciels dans l'interface graphique.

Je suis donc allé dans le dossier de l'émulateur ( Show on Disklien dans AVDM) et j'ai trouvé leconfig.ini

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

hw.gpu.enabled=no
jkbadsberg
la source
-1

$ 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

Rahul Bhardwaj
la source