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

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

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


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

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.


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.


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.


-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 
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.