Tidak dapat meluncurkan emulator di Linux (Ubuntu 15.10)

103

Saya mencoba meluncurkan emulator tetapi menghasilkan log:

libGL error: unable to load driver: r600_dri.so 
libGL error: driver pointer missing 
libGL error: failed to load driver: r600 
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:  47
Current serial number in output stream:  46 
libGL error: unable to load driver: r600_dri.so 
libGL error: driver pointer missing 
libGL error: failed to load driver: r600 
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:  47   
Current serial number in output stream:  46 
libGL error: unable to load driver: r600_dri.so 
libGL error: driver pointer missing 
libGL error: failed to load driver: r600
libGL error: unable to load driver: swrast_dri.so 
libGL error: failed to load driver: swrast 
X Error of failed request:  BadValue (integer parameter out of range for operation)   
Major opcode of failed request:  155 (GLX)   
Minor opcode of failed request:  24 (X_GLXCreateNewContext)   
Value in failed request:  0x0   
Serial number of failed request:  33   
Current serial number in output stream:  34 
QObject::~QObject: Timers cannot be stopped from another thread emulator: WARNING: Increasing RAM size to 1GB

Bagaimana memperbaikinya? Saya membaca topik dengan kesalahan serupa tetapi tidak membantu saya.

Шах
sumber
menemukan di sini solusi yang nyaman tanpa extralines diberikan dalam jawaban ini: [ github.com/rimian/cordova-ember-android]
Refle

Jawaban:

79

Melihat

https://code.google.com/p/android/issues/detail?id=197254

khususnya item # 3 dan # 19. Ini adalah solusi, bukan solusi yang sebenarnya, tetapi membuat saya bergerak lagi. Anda harus menyesuaikan perintah untuk:

  • lokasi libstdc++.so.6file di sistem Anda - saya gunakanlocate libstdc++.so.6 menemukan ini
  • jalur ke emulator yang dapat dieksekusi
  • nama emulator Anda

jadi perintah saya

LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -netdelay none -netspeed full -avd Nexus_5_API_21

Ini kemudian meluncurkan emulator, dan Anda dapat memilihnya dalam dialog 'Device Chooser' saat Anda menjalankan aplikasi.

Menandai
sumber
Terima kasih! Tetapi dalam kasus saya OS tidak melihat paket fglrx meskipun saya menginstalnya dan berhasil. Tetapi setelah pembaruan sistem, saya mendapat bug ini. Saya menginstal ulang paket ini dan menjadi berfungsi lagi :) Maaf untuk bahasa Inggris.
Шах
Perbaikan yang diuraikan dalam posting # 23 dari tautan memungkinkan emulator saya diluncurkan di Ubuntu 16.04, tetapi layar emulator hanya menampilkan warna hitam.
dazza5000
5
Saya memecahkan masalah dengan cara yang jelek: cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 $ANDROID_HOME/tools/lib/libstdc++/libstdc++.so.6
Yu Jiaao
Jika bermanfaat, Anda dapat menemukan nama emulator dengan:LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -list-avds
DaveyDaveDave
170

Menggunakan libstdc ++. So.6 yang tersedia di sistem Anda, bukan yang dipaketkan dengan sdk android, memecahkan masalah ini.

  • Emulator memiliki tombol -use-system-libsuntuk melakukan ini.

    ~/Android/Sdk/tools/emulator -avd Nexus_5_API_23 -use-system-libs

  • Atau Anda dapat mengatur ANDROID_EMULATOR_USE_SYSTEM_LIBSvariabel lingkungan ke 1untuk pengguna / sistem Anda. Ini memiliki keuntungan untuk memastikan bahwa emulator akan berfungsi meskipun Anda meluncurkannya dari dalam Android Studio.

Detail selengkapnya: https://code.google.com/p/android/issues/detail?id=197254#c15

exception_noted
sumber
Dan setelah itu di Android Studio Anda akan muncul perangkat yang terhubung (dalam hal ini Nexus_5_API_23) ketika Anda mencoba menjalankan aplikasi Anda.
Alejo Bernardin
3
Ini adalah jawaban terbaik imo karena emulator dapat diluncurkan dengan benar melalui skrip shell tanpa harus memindahkan atau menautkan pustaka sdk yang ada.
Potaito
19
pada Ubuntu 16.10 export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1harus ditambahkan ke$HOME/.profile
Greg Dan
opsi tidak diketahui: -use-system-libs :(
Jaroslav Záruba
1
@GregDan: atau ke/etc/environment
serv-inc
123
$ cd Android/Sdk/emulator/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6

itu berhasil untuk saya

Mortada Jafar
sumber
1
Sepertinya saya harus menginstal libstdc ++ dan baru setelah itu saya dapat menjalankan simulator, Terima kasih atas bantuan Anda!
Pini Cheyni
6
libstdc ++. so.6 saya terletak di /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Joshua
2
@Joshua - Benar. Untuk Ubuntu 17.10+, Anda memerlukan yang berikut ini untuk langkah terakhir $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Timothy C. Quinn
Bekerja untuk saya. Saya ingin tahu apa yang merusaknya.
Toby Wilson
Solusi ini berhasil untuk saya. Emulator rusak setelah pembaruan dari Ubuntu 16.04 ke 18.04. Terima kasih!
ruX
52

Saya memiliki kesalahan serupa di Ubuntu 16.04 64-bit. Bagi saya, solusi jawaban # 23 bekerja dengan baik https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter % 20Dibuka & groupby = & sort = & id = 197254

$ cd $ANDROID_HOME/android-sdk-linux_x86/tools/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6 $ANDROID_HOME/android-sdk-linux_x86/tools/lib64/libstdc++
luizMello
sumber
Ini berhasil untuk saya. Anda mungkin harus mencari di direktori yang berbeda untuk sdk android Anda. Punyaku ditemukan di/home/daniel/Android/Sdk/tools/lib64/libstdc++
Daniel Levin
Ya, jalur bagian sebelum "/ tools" dapat bervariasi tergantung pada Nama pengguna dan folder instalasi Sdk.
luizMello
3
konfirmasi berfungsi, di ubuntu xenial jalurnya adalah /usr/lib/x86_64-linux-gnu/libstdc+.so.6
arisalexis
terima kasih .... ini adalah solusinya juga di ubuntu 16.10, jalur yang sama seperti pada komentar di atas ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ~ / Android / Sdk / tools / lib64 / libstdc ++
Juan
29

Gunakan "Software" dalam opsi Emulated Performance Graphics, di pengaturan AVD. Solusi yang sangat sederhana.

saintjab
sumber
Ini sederhana tapi sangat lambat :)
Шах
Bekerja di ubuntu 16 64bit, cukup dropdown pilih :) 10x
Vasil Valchev
Itu adalah solusi HANYA yang bekerja untuk saya (Ubuntu 16.04LTS)
Feu
20

saya melakukan ini dan itu berhasil

cd ~/Android/Sdk/emulator/lib64/libstdc++ 
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6
tetar
sumber
Saya mengalami bug ini karena driver video saya, saya memasangnya kembali nanti dan semuanya mulai berfungsi. Saya sudah lupa tentang bug ini, sangat aneh masih ada yang bermasalah karena mencari banyak solusi termasuk topik ini.
Шах
saya baru saja memiliki bug ini 10 menit yang lalu :)
tetar
10

lebih baik cari libstdc ++. so.6 default sistem Anda menggunakan perintah cari libstdc ++. so.6

Dan Kemudian Ambil cadangan versi android sdk dari file tersebut di ~ / Android / Sdk / tools / lib64 / libstdc ++ /

Dan buat tautan lunak untuk libstdc ++. So.6 dengan nama yang sama di jalur di atas menggantikan yang sudah ada yang menunjuk ke file default di sistem

Dengan cara ini kita tidak perlu memulai ulang emulator setiap kali dari baris perintah.

BuzzR
sumber
9

Coba ubah opsi grafis di pengaturan Emulator: masukkan deskripsi gambar di sini

Mohsen Kashi
sumber
0

Saya juga mengalami banyak masalah saat meluncurkan AVD di komputer saya. Berjuang dengan menggunakan sistem libs, membuat symlink ke perpustakaan lokal, dll ...

Apa yang benar-benar membuatnya berhasil bagi saya adalah menginstal driver nvidia

sudo apt install nvidia-340

Distro saya (perhatikan saya tidak menggunakan Ubuntu 15.10):

$ uname -a
Linux ruapehu 4.4.0-38-generic #57-Ubuntu SMP Tue Sep 6 15:42:33 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/issue
Ubuntu 16.04.1 LTS \n \l

Pastikan Anda memeriksa paket nvidia yang cocok untuk Anda, karena Ubuntu menawarkan rasa yang berbeda. Misalnya:

$ sudo apt list "nvidia-[0-9][0-9][0-9]" 
Listing... Done
nvidia-304/xenial 304.131-0ubuntu3 amd64
nvidia-331/xenial 340.96-0ubuntu3 amd64
nvidia-340/xenial,now 340.96-0ubuntu3 amd64 [installed]
nvidia-346/xenial 352.63-0ubuntu3 amd64
nvidia-352/xenial 361.42-0ubuntu2 amd64
nvidia-361/xenial,now 361.42-0ubuntu2 amd64

Saya menguji daftar tersebut dalam strategi bottom-up, dari 361 hingga saya menemukan satu yang berhasil (340, dalam kasus saya).

Semoga membantu.

Alexandre Schmidt
sumber
0

Dalam kasus saya (Ubuntu 16.10 64-bit, Android Studio 2.3) libs terletak di tempat lain. Jadi perintahnya adalah:

/home/myusername/Android/Sdk/emulator/lib64/libstdc++

➜  libstdc++ ll
total 9,3M
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.0.18

➜  libstdc++ mv libstdc++.so.6 libstdc++.so.6.bak
➜  libstdc++ mv libstdc++.so.6.0.18 libstdc++.so.6.0.18.bak
➜  libstdc++ ln -s /usr/lib32/libstdc++.so.6 /home/myusername/Android/Sdk/emulator/lib64/libstdc++ 
➜  libstdc++ ln -s /usr/lib32/libstdc++.so.6.0.22 /home/myusername/Android/Sdk/emulator/lib64/libstdc++ 

➜  libstdc++ ll
total 9,3M
lrwxrwxrwx 1 myusername myusername   25 мар 29 13:18 libstdc++.so.6 -> /usr/lib32/libstdc++.so.6
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.0.18.bak
lrwxrwxrwx 1 myusername myusername   30 мар 29 13:19 libstdc++.so.6.0.22 -> /usr/lib32/libstdc++.so.6.0.22
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.bak

Dan sekarang emulator diluncurkan dari AVD manager secara normal.

porfirion.dll
sumber
0

Saya memiliki masalah yang sama dengan penggunaan i965_dri.sodanswrast_dri.so , saya tidak dapat mengubah ke grafis perangkat lunak di GUI.

Jadi saya pergi ke folder emulator ( Show on Disktautan di AVDM) dan menemukan fileconfig.ini

Di sini saya baru saja mengubah baris berikut untuk menghentikannya menggunakan GPU:

hw.gpu.enabled=no
jkbadsberg.dll
sumber
-1

$ cd ~ / Android / Sdk / emulator / lib64 / libstdc ++ $ mv libstdc ++. so.6 libstdc ++. so.6.bak $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc ++. jadi .6

Rahul Bhardwaj
sumber