Buggy studio Android après la mise à niveau vers 16.10

31

J'ai récemment mis à niveau de 16.04 LTS où mon studio Android fonctionnait bien à 16.10 mais en essayant d'exécuter mes émulateurs avd, voici le journal des erreurs que je récupère à la place

Cannot launch AVD in emulator.
Output:
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
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:  55
  Current serial number in output stream:  54
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
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 r
user637425
la source
est le studio android sur ce chemin opt/android-studio??
Arduino_Sentinel
Cela se produit également pour moi sur Ubuntu 17.04. La réponse d'Arduino_Sentinel l'a corrigé.
Rimian

Réponses:

49

Dans les récentes mises à jour d'Android Studio, Google utilise un libstdc++qui est incompatible avec le pilote Intel installé sur le système

Vous devez d'abord installer les packages suivants s'il n'y en a pas sur le système lib64stdc++6etmesa-utils

sudo apt-get install lib64stdc++6 mesa-utils

Ensuite, créez un lien symbolique entre les bibliothèques et le chemin des outils Android SDK

## For the /Sdk/tools path

cd ~/Android/Sdk/tools/lib64/libstdc++
# making a copy of the file
sudo mv libstdc++.so.6 libstdc++.so.6.og
# symlink
sudo ln -s /usr/lib64/libstdc++.so.6 ~/Android/Sdk/tools/lib64/libstdc++

## For the /Sdk/emulator path

cd ~/Android/Sdk/emulator/lib64/libstdc++
# making a copy of the file
sudo mv libstdc++.so.6 libstdc++.so.6.og 
# symlink
sudo ln -s /usr/lib64/libstdc++.so.6 ~/Android/Sdk/emulator/lib64/libstdc++
Arduino_Sentinel
la source
12
Le dossier était ~/Android/Sdk/emulator/lib64/libstdc++pour moi.
Kevin Brotcke
42

J'ai également eu ce problème sur Ubuntu 17.04 et voici ce que j'ai fait.

Modifiez votre en .profileutilisant votre éditeur de texte préféré

atom ~/.profile

Ajoutez ceci à la fin du fichier

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

Source: variable d'environnement SDK Android

jasperagrante
la source
2
la meilleure solution
Vladimir
Cela ne fonctionnait pas sur Ubuntu 17.10 avec Android Studio 3.01. Je viens de renommer le dossier de la bibliothèque ~ / Android / Sdk / emulator / lib64 / lib / libstdc ++ et cela a fonctionné.
Vincent Gerris
A travaillé pour moi sur Kubuntu 18.04. Merci beaucoup!
Vanessa Deagan
18

Exécutez l'émulateur à partir du terminal

emulator -use-system-libs -avd YOUR_VIRTUAL_DEVICE_NAME
katenzo
la source
1
Existe-t-il un moyen de définir ce paramètre par défaut, je n'ai donc pas besoin de l'exécuter à partir d'un terminal?
karora
1
@karora voir la réponse de
jasperagrante
@AltianoGerung ouais, puisque j'ai déjà enveloppé Android Studio dans un script shell, j'ai fini par y
placer
4

une autre solution simple consiste à renommer libstdc ++ dans le dossier de l'émulateur du répertoire sdk Android. Il reviendra aux bibliothèques système (doit être installé). Cela a `` fonctionné '' pour moi sur Ubuntu 17.10.

Vincent Gerris
la source
Haha c'est ridicule!
Kenneth Worden
Que voulez-vous dire :)? Personnellement, je ne comprends pas pourquoi Google l'expédie comme ça. L'option use-system-libs ne fonctionnait pas pour moi, donc cela semble être une solution de contournement valide, il suffit de le refaire lorsque l'émulateur est mis à jour.
Vincent Gerris
2

Mettez à jour l'émulateur.

Tools -> SDK Manager -> SDK Tools -> Android Emulator

entrez la description de l'image ici

Il s'agit d'un bug qui est en cours de correction dans 27.2.9.

La version Linux de l'émulateur Android est désormais construite à l'aide d'une chaîne d'outils Clang C ++ moderne. Cette modification résout le problème de l'émulateur qui ne démarre pas en raison d'erreurs libGL et libstdc ++.


FYI: BTW créer manuellement des liens symboliques n'est pas une bonne idée.

Le réglage ANDROID_EMULATOR_USE_SYSTEM_LIBSest une meilleure approche. Cependant, ce n'est pas non plus nécessaire lorsque vous pouvez simplement mettre à jour l'émulateur.

Gayan Weerakutti
la source
1

J'ai changé l'accélération graphique de l'automobile / matériel au logiciel. Les pilotes à l'origine de ce problème ne sont nécessaires que pour utiliser du matériel réel pour l'accélération graphique. À moins que vous ne travailliez sur un jeu ou un autre logiciel intensif graphique, vous n'en aurez pas vraiment besoin. Cela doit être fait sur chaque annonce mais reste réglé une fois terminé.

oùdevraitêtrevenu de
la source
-1

Ce lien aide. J'ai modifié l'emplacement de libstdc ++. Donc basé sur mon installation d'Ubuntu 17.10. L'emplacement du fichier libstdc ++. So était différent. Recherchez libstdc ++ sur votre ordinateur.

Ubuntu 17.10 et Android Studio 3.1

cd /opt/android-sdk/emulator/lib64/libstdc++
mv libstdc++.so.6{,.bak}
mv libstdc++.so.6.0.19{,.bak}
ln -s /usr/lib/gcc/x86_64-linux-gnu/7/libstdc++.so 
Scott
la source