Android Studio Buggy nach dem Upgrade auf 16.10


31

Ich habe vor kurzem ein Upgrade von 16.04 LTS durchgeführt, bei dem mein Android Studio einwandfrei auf 16.10 funktionierte, aber beim Versuch, meine AVD-Emulatoren auszuführen, ist dies das Fehlerprotokoll, das ich stattdessen zurückerhalte

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

Ist Android Studio auf diesem Weg opt/android-studio?
Arduino_Sentinel

Dies passiert bei mir unter Ubuntu 17.04 auch. @ Arduino_Sentinels Antwort hat es behoben.
Rimian,

Antworten:


49

In den letzten Android Studio-Updates verwendet Google einen libstdc++Treiber, der nicht mit dem auf dem System installierten Intel-Treiber kompatibel ist

Sie müssen zuerst die folgenden Pakete installieren, falls diese nicht auf dem System lib64stdc++6und vorhanden sindmesa-utils

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

Verknüpfen Sie dann die Bibliotheken mit dem Pfad für die Android SDK-Tools

## 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++

12
Ordner war ~/Android/Sdk/emulator/lib64/libstdc++für mich da.
Kevin Brotcke

42

Ich hatte auch dieses Problem unter Ubuntu 17.04 und hier ist, was ich getan habe.

Bearbeiten Sie Ihre .profilemit Ihrem bevorzugten Texteditor

atom ~/.profile

Hängen Sie dies am Ende der Datei an

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

Quelle: Android SDK-Umgebungsvariable


2
die beste Lösung
Vladimir

Dies funktionierte unter Ubuntu 17.10 mit Android Studio 3.01 nicht. Ich habe gerade den Bibliotheksordner ~ / Android / Sdk / emulator / lib64 / lib / libstdc ++ umbenannt und es hat funktioniert.
Vincent Gerris

Hat für mich am Kubuntu 18.04 gearbeitet. Vielen Dank!
Vanessa Deagan

18

Führen Sie den Emulator vom Terminal aus

emulator -use-system-libs -avd YOUR_VIRTUAL_DEVICE_NAME

1
Gibt es eine Möglichkeit, dies als Standard festzulegen, sodass ich es nicht von einem Terminal aus ausführen muss?
Karora

1
@ Karora siehe Jasperagrantes Antwort
Altiano Gerung

@AltianoGerung ja, da ich Android Studio bereits in ein Shell-Skript einbinde, habe ich die Variable dort gesetzt ...
karora

4

Eine andere einfache Problemumgehung besteht darin, die libstdc ++ im Emulator-Ordner im Android-SDK-Verzeichnis umzubenennen. Es wird auf die Systembibliotheken zurückgegriffen (muss installiert werden). Das hat bei mir unter Ubuntu 17.10 'gerade funktioniert'.


Haha das ist lächerlich!
Kenneth Worden

Was meinst du :)? Ich persönlich verstehe nicht, warum Google es so versendet. Die Option use-system-libs hat bei mir nicht funktioniert, daher scheint es eine gültige Problemumgehung zu sein. Sie muss nur erneut ausgeführt werden, wenn der Emulator aktualisiert wird.
Vincent Gerris

2

Aktualisieren Sie den Emulator.

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

Bildbeschreibung hier eingeben

Dies ist ein Fehler, der in 27.2.9 behoben wird.

Die Linux-Version des Android-Emulators basiert jetzt auf einer modernen Clang C ++ - Toolchain. Diese Änderung behebt das Problem, dass der Emulator aufgrund von libGL- und libstdc ++ - Fehlern nicht gestartet werden konnte.


Übrigens: Es ist keine gute Idee, Symlinks manuell zu erstellen.

Einstellen ANDROID_EMULATOR_USE_SYSTEM_LIBSist ein besserer Ansatz. Dies ist jedoch auch nicht erforderlich, wenn Sie nur den Emulator aktualisieren können.


1

Ich habe die Grafikbeschleunigung von Auto / Hardware auf Software umgestellt. Die Treiber, die dieses Problem verursachen, werden nur benötigt, um echte Hardware für die Grafikbeschleunigung zu verwenden. Sofern Sie nicht an einem Spiel oder einer anderen grafikintensiven Software arbeiten, benötigen Sie diese nicht wirklich. Dies muss bei jedem Adv gemacht werden, bleibt aber einmal gesetzt.


-1

Dieser Link hilft. Ich habe den Speicherort der libstdc ++. So geändert, dass er auf meiner Ubuntu 17.10-Installation basiert. Der Speicherort der libstdc ++ .so-Datei war anders. Suchen Sie auf Ihrem Computer nach libstdc ++

Ubuntu 17.10 und 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 
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.