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.
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:
libstdc++.so.6
sur votre système - j'ai utilisé locate libstdc++.so.6
pour le trouverdonc 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.
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
$ 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
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++
Utilisez "Logiciel" dans l'option Graphiques de performances émulées, dans les paramètres AVD. Solution très simple.
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
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.
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.
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.
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
Ceci est corrigé dans Android Emulator 27.2.9. Voir le premier correctif répertorié ici: https://developer.Android.com/studio/releases/emulator#fixes