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
user637425
quelle
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++
Arduino_Sentinel
quelle
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

Jasperagrante
quelle
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
katenzo
quelle
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'.

Vincent Gerris
quelle
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.

Gayan Weerakutti
quelle
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.

woher, dassnamecomefrom
quelle
-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 
Scott
quelle