Buggy studia Android po aktualizacji do wersji 16.10

31

Niedawno zaktualizowałem z 16.04 LTS, gdzie moje studio z Androidem działało dobrze do 16.10, ale próbując uruchomić emulatory AVD, to jest dziennik błędów

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
użytkownik637425
źródło
czy na tej ścieżce jest studio Android opt/android-studio?
Arduino_Sentinel
Zdarza się to również w przypadku Ubuntu 17.04. Odpowiedź @ Arduino_Sentinel to naprawiła.
Rimian

Odpowiedzi:

49

W najnowszych aktualizacjach Android Studio Google używa libstdc++niezgodnego sterownika Intel zainstalowanego w systemie

Najpierw musisz zainstalować następujące pakiety, jeśli nie ma ich w systemie lib64stdc++6imesa-utils

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

Następnie dowiązaj biblioteki do ścieżki narzędzi SDK Androida

## 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
źródło
12
Folder był ~/Android/Sdk/emulator/lib64/libstdc++dla mnie.
Kevin Brotcke
42

Miałem również ten problem na Ubuntu 17.04 i oto co zrobiłem.

Edytuj swoje .profileza pomocą swojego ulubionego edytora tekstu

atom ~/.profile

Dołącz to na końcu pliku

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

Źródło: Android SDK Environment Variable

jasperagrante
źródło
2
najlepsze rozwiązanie
Vladimir
To nie działało na Ubuntu 17.10 z Android Studio 3.01. Właśnie zmieniłem nazwę folderu biblioteki ~ / Android / Sdk / emulator / lib64 / lib / libstdc ++ i zadziałało.
Vincent Gerris
Pracował dla mnie na Kubuntu 18.04. Dziękuję Ci bardzo!
Vanessa Deagan
18

Uruchom emulator z terminala

emulator -use-system-libs -avd YOUR_VIRTUAL_DEVICE_NAME
katenzo
źródło
1
Czy jest jakiś sposób, aby ustawić to jako domyślne, więc nie muszę uruchamiać go z terminala?
karora
1
@karora patrz odpowiedź
jasperagrante
@AltianoGerung tak, ponieważ już opakowuję Android Studio w skrypt powłoki, skończyłem ustawiać tam zmienną ...
karora
4

innym prostym obejściem jest zmiana nazwy libstdc ++ w folderze emulatora w katalogu sdk Androida. Powróci do bibliotek systemowych (należy je zainstalować). To „po prostu działało” dla mnie na Ubuntu 17.10.

Vincent Gerris
źródło
Haha, to jest śmieszne!
Kenneth Worden
Co masz na myśli :)? Osobiście nie rozumiem, dlaczego Google tak to wysyła. Opcja use-system-libs nie działała dla mnie, więc wydaje się, że jest to poprawne obejście, po prostu trzeba to zrobić ponownie, gdy emulator zostanie zaktualizowany.
Vincent Gerris
2

Zaktualizuj emulator.

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

wprowadź opis zdjęcia tutaj

Jest to błąd, który został naprawiony w 27.2.9.

Emulator Androida na Linuksa jest teraz zbudowany przy użyciu nowoczesnego zestawu narzędzi Clang C ++. Ta zmiana rozwiązuje problem z uruchomieniem emulatora z powodu błędów libGL i libstdc ++.


FYI: BTW ręczne tworzenie dowiązań symbolicznych nie jest dobrym pomysłem.

Ustawienie ANDROID_EMULATOR_USE_SYSTEM_LIBSto lepsze podejście. Jednak nie jest to również konieczne, gdy można po prostu zaktualizować emulator.

Gayan Weerakutti
źródło
1

Zmieniłem przyspieszenie grafiki z auto / sprzęt na oprogramowanie. Sterowniki, które powodują ten problem, są potrzebne tylko do użycia prawdziwego sprzętu do przyspieszenia grafiki. O ile nie pracujesz nad grą lub innym oprogramowaniem intensywnie korzystającym z grafiki, tak naprawdę nie potrzebujesz tego. Tę czynność należy wykonać w przypadku każdej reklamy, ale po zakończeniu pozostaje ona ustawiona.

wheredidthatnamecomefom
źródło
-1

Ten link pomaga. Zmodyfikowałem lokalizację biblioteki libstdc ++. W oparciu o moją instalację Ubuntu 17.10. Libstdc ++. Więc lokalizacja pliku była inna. Wyszukaj na komputerze libstdc ++

Ubuntu 17.10 i 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
źródło