Linux'ta emülatör başlatılamıyor (Ubuntu 15.10)


103

Öykünücüyü başlatmaya çalışıyorum ama günlüğe çıktı:

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

Nasıl düzeltilir? Benzer hatalara sahip konuları okudum ama bana yardımcı olmuyor.


Burada bu cevapta verilen extralines olmadan uygun bir çözüm bulmak: [ github.com/rimian/cordova-ember-android]
Refle

Yanıtlar:


79

Şuna baksana

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

özellikle 3 ve 19 numaralı öğeler. Bu gerçek bir çözümden ziyade geçici bir çözüm, ancak beni tekrar harekete geçirdi. Komutu şunun için ayarlamanız gerekecek:

  • yeri libstdc++.so.6sisteminizde dosyanın - kullandığım locate libstdc++.so.6bu bulmak için
  • çalıştırılabilir öykünücünün yolu
  • emülatörünüzün adı

bu yüzden benim emrim

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

Bu daha sonra emülatörü başlatır ve uygulamanızı çalıştırdığınızda 'Cihaz Seçici' diyaloğunda bunu seçebilirsiniz.


Teşekkür ederim! Ama benim durumumda işletim sistemi fglrx paketini kurmama rağmen görmüyor ve çalıştı. Ancak sistem güncellemelerinden sonra bu hatayı aldım. Bu paketi yeniden yükledim ve tekrar çalışmaya başladı :) İngilizce için özür dilerim.
Шах

Bağlantıdan # 23 numaralı gönderide özetlenen düzeltme, emülatörümün Ubuntu 16.04'te başlatılmasına izin verdi, ancak emülatör ekranı yalnızca siyah görüntüleniyor.
dazza5000

5
Sorunu çirkin bir şekilde cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 $ANDROID_HOME/tools/lib/libstdc++/libstdc++.so.6
çözdüm

LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -list-avds
Yardımcı

170

Android sdk ile birlikte gelen yerine sisteminizde bulunan libstdc ++. So.6'yı kullanmak bu sorunu çözer.

  • Öykünücünün -use-system-libsbunu yapmak için bir anahtarı vardır .

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

  • Alternatif olarak , kullanıcı / sisteminiz için ANDROID_EMULATOR_USE_SYSTEM_LIBSortam değişkenini olarak ayarlayabilirsiniz 1. Bu, emülatörün Android Studio içinden başlatılmış olsanız bile çalışacağından emin olma avantajına sahiptir.

Daha fazla ayrıntı: https://code.google.com/p/android/issues/detail?id=197254#c15


Ve bundan sonra, uygulamanızı çalıştırmayı denediğinizde Android Studio'nuzda bağlı bir cihaz (bu durumda Nexus_5_API_23) görünecektir.
Alejo Bernardin

3
Emülatör, mevcut sdk kitaplıklarını taşımak veya bağlamak zorunda kalmadan bir kabuk betiği aracılığıyla düzgün bir şekilde başlatılabildiğinden, bu en iyi yanıt imo'dur.
Potaito

19
Ubuntu 16.10'da export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1eklenmesi gerekiyor$HOME/.profile
Greg Dan

bilinmeyen seçenek: -use-system-libs :(
Jaroslav Záruba

1
@GregDan: or to/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

benim için çalıştı


1
Görünüşe göre libstdc ++ 'yı kurmam gerekiyordu ve ancak bundan sonra simülatörü çalıştırabildim, Yardımın için teşekkürler!
Pini Cheyni

6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6 adresinde bulunan libstdc ++. so.6
Joshua

2
@Joshua - Doğru. Ubuntu 17.10+ için son adım için aşağıdakilere ihtiyacınız var $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Timothy C. Quinn

Benim için çalıştı. Yine de neyin kırdığını bilmek isterim.
Toby Wilson

Bu çözüm benim için çalışıyor. Öykünücü, Ubuntu 16.04'ten 18.04'e güncellemeden sonra bozuldu. Teşekkürler!
ruX

52

Ubuntu 16.04 64-bit'te benzer bir hatam var. Benim için 23 numaralı çözüm harika çalışıyor https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter % 20Open & 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++

Bu benim için çalıştı. Yine de android sdk'niz için farklı dizinlere bakmanız gerekebilir. Maden bulundu/home/daniel/Android/Sdk/tools/lib64/libstdc++
Daniel Levin

Evet, "/ tools" dan önceki bölüm yolu, Kullanıcı adlarına ve Sdk kurulum klasörüne bağlı olarak değişebilir.
luizMello

3
çalışmayı onaylayın, ubuntu xenial'de yol /usr/lib/x86_64-linux-gnu/libstdc++.so.6
arisalexis

teşekkür ederim .... bu, ubuntu 16.10'da da çözümdü, yukarıdaki ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ~ / Android / Sdk / tools / lib64 / libstdc ++
Juan

29

AVD ayarlarında Emulated Performance Graphics seçeneğindeki "Software" seçeneğini kullanın. Çok basit çözüm.


Bu basit ama çok yavaş :)
Шах

Ubuntu 16 64bit üzerinde çalışın, sadece açılır menü seçin :) 10x
Vasil Valchev

Benim için çalışan TEK çözüm buydu (Ubuntu 16.04LTS)
Feu

20

Bunu yapıyorum ve işe yarıyor

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

Video sürücüm nedeniyle bu hatayı yaşadım, daha sonra yeniden yükledim ve çalışmaya başladım. Bu hatayı zaten unuttum, birisinin hala sorun yaşıyor olması çok garip çünkü bu konu dahil birçok çözüm aramada.
Шах

10 dakika önce bu hatayı
aldım

10

sistem varsayılan libstdc ++. so.6 komutunu kullanarak libstdc ++ 'yı bulun. so.6

Ve Sonra ~ / Android / Sdk / tools / lib64 / libstdc ++ / konumunda dosyanın android sdk sürümünün bir yedeğini alın

Ve libstdc ++ için yumuşak bir bağlantı oluşturun. So.6, yukarıdaki yoldaki aynı ada sahip, mevcut olanı sistemdeki varsayılan dosyaya işaret eden ile değiştirerek

Bu şekilde her seferinde emülatörü komut satırından yeniden başlatmamıza gerek kalmaz.



0

Ayrıca makinemde AVD'yi başlatmak için birçok sorun yaşıyordum. Sistem kitaplıklarını kullanma, yerel kitaplıklara sembolik bağlantılar oluşturma vb.

Benim için gerçekten işe yarayan şey, nvidia sürücülerini

sudo apt install nvidia-340

Dağıtımım (Ubuntu 15.10 kullanmadığımı unutmayın):

$ 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

Ubuntu farklı tatlar sunduğundan, size uygun nvidia paketini kontrol ettiğinizden emin olun. Örneğin:

$ 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

Listeyi aşağıdan yukarıya bir stratejide test ettim, 361'den işe yarayan birini bulana kadar (benim durumumda 340).

Umarım yardımcı olur.


0

Benim durumumda (Ubuntu 16.10 64-bit, Android Studio 2.3) kütüphaneler başka bir yerde bulunuyordu. Yani komutlar:

/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

Ve şimdi emülatör normal olarak AVD yöneticisinden başlatılır.


0

Ben kullanarak benzer sorunlar vardı i965_dri.sove swrast_dri.soben GUI yazılım grafik değiştirmek mümkün değildi.

Bu yüzden öykünücünün klasörüne ( Show on DiskAVDM'deki bağlantı) gittim veconfig.ini

Burada GPU'yu kullanmasını engellemek için aşağıdaki satırı değiştirdim:

hw.gpu.enabled=no


-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 ++. yani .6

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.