Buggy da studio Android dopo l'aggiornamento alla 16.10


31

Di recente ho eseguito l'aggiornamento da 16.04 LTS in cui il mio studio Android funzionava correttamente fino a 16.10 ma nel tentativo di eseguire i miei emulatori avd, questo è il registro degli errori che torno invece

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

Android Studio è su questo percorso opt/android-studio??
Arduino_Sentinel,

Questo succede anche a me su Ubuntu 17.04. La risposta di @ Arduino_Sentinel l'ha risolta.
Rimian,

Risposte:


49

Nei recenti aggiornamenti di Android Studio, Google utilizza un file libstdc++incompatibile con il driver Intel installato sul sistema

Devi prima installare i seguenti pacchetti se non ci sono sul sistema lib64stdc++6 emesa-utils

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

Quindi collega simbolicamente le librerie al percorso degli strumenti 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++

12
La cartella era dentro ~/Android/Sdk/emulator/lib64/libstdc++per me.
Kevin Brotcke,

42

Ho avuto anche questo problema su Ubuntu 17.04 ed ecco cosa ho fatto.

Modifica il tuo .profileutilizzando il tuo editor di testo preferito

atom ~/.profile

Aggiungi questo alla fine del file

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

Fonte: variabile di ambiente SDK Android


2
la migliore soluzione
Vladimir

Questo non ha funzionato su Ubuntu 17.10 con Android Studio 3.01. Ho appena rinominato la cartella della libreria ~ / Android / Sdk / emulator / lib64 / lib / libstdc ++ e ha funzionato.
Vincent Gerris,

Ha funzionato per me su Kubuntu 18.04. Grazie mille!
Vanessa Deagan,

18

Esegui l'emulatore dal terminale

emulator -use-system-libs -avd YOUR_VIRTUAL_DEVICE_NAME

1
Esiste un modo per renderlo predefinito, quindi non è necessario eseguirlo da un terminale?
karora,

1
@karora vedi la risposta di
Jasperagrante

@AltianoGerung sì, dato che ho già avvolto Android Studio in uno script di shell ho finito per impostare la variabile lì ...
Karora,

4

un'altra semplice soluzione consiste nel rinominare libstdc ++ nella cartella dell'emulatore nella directory sdk di Android. Tornerà alle librerie di sistema (deve essere installato). Quello "ha funzionato" per me su Ubuntu 17.10.


Ahah questo è ridicolo!
Kenneth Worden,

Cosa intendi :)? Personalmente non capisco perché Google lo spedisca in questo modo. L'opzione use-system-libs non ha funzionato per me, quindi sembra una soluzione valida, bisogna solo rifarlo quando si aggiorna l'emulatore.
Vincent Gerris, il

2

Aggiorna l'emulatore.

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

inserisci qui la descrizione dell'immagine

Questo è un bug che è stato corretto in 27.2.9.

La versione Linux dell'emulatore Android è ora costruita utilizzando un moderno toolchain Clang C ++. Questa modifica risolve il problema che l'emulatore non si avviava a causa di errori libGL e libstdc ++.


Cordiali saluti: BTW creare manualmente collegamenti simbolici non è una buona idea.

L'impostazione ANDROID_EMULATOR_USE_SYSTEM_LIBSè un approccio migliore. Tuttavia, anche questo non è necessario quando si può semplicemente aggiornare l'emulatore.


1

Ho cambiato l'accelerazione grafica da auto / hardware a software. I driver che causano questo problema sono necessari solo per utilizzare l'hardware reale per l'accelerazione grafica. A meno che tu non stia lavorando su un gioco o altri software ad alta intensità grafica, non ti serve davvero. Questo deve essere fatto su ogni adv ma rimane impostato una volta fatto.


-1

Questo link aiuta. Ho modificato la posizione di libstdc ++, in base alla mia installazione di Ubuntu 17.10. Il libstdc ++. Quindi la posizione del file era diversa. Cerca libstdc ++ sul tuo computer

Ubuntu 17.10 e 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 
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.