Не вдається запустити емулятор в Linux (Ubuntu 15.10)


103

Я намагаюся запустити емулятор, але він виводить у журнал:

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

Як це виправити? Я читаю теми з подібними помилками, але це мені не допомагає.


знайдіть тут зручне рішення без екстралінів, наведених у цій відповіді: [ github.com/rimian/cordova-ember-android]
розмірковування

Відповіді:


79

Подивись на

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

зокрема пункти №3 та №19. Це швидше рішення, а не справжнє рішення, але воно змусило мене рухатись знову. Вам доведеться налаштувати команду на:

  • розташування libstdc++.so.6файлу у вашій системі - я locate libstdc++.so.6це знаходив
  • шлях до виконуваного емулятора
  • ім'я вашого емулятора

тому моя команда була

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

Потім запускається емулятор, і ви можете вибрати його в діалоговому вікні "Вибір пристроїв" під час запуску програми.


Дякую! Але в моєму випадку ОС не бачить пакет fglrx, хоча я встановив його і він працював. Але після оновлень системи я отримав цю помилку. Я перевстановив цей пакет, і він знову став працювати :) Вибачте за англійську мову.
Шах

Виправлення, викладене в публікації №23 за посиланням, дозволило моєму емулятору запуститись на Ubuntu 16.04, але екран емулятора відображає лише чорний колір.
dazza5000

5
Я вирішив проблему потворним способом: cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 $ANDROID_HOME/tools/lib/libstdc++/libstdc++.so.6
Ю Цзяао

Якщо це корисно, ви можете знайти ім'я емулятора за допомогою:LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -list-avds
DaveyDaveDave

170

Використання libstdc ++. So.6, яке доступне у вашій системі замість того, яке в комплекті з android sdk, вирішує цю проблему.

  • Для цього емулятор має перемикач -use-system-libs.

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

  • Крім того, ви можете встановити ANDROID_EMULATOR_USE_SYSTEM_LIBSзмінну середовища 1для вашого користувача / системи. Це має перевагу в тому, щоб переконатися, що емулятор буде працювати, навіть якщо ви запустили його в Android Studio.

Детальніше: https://code.google.com/p/android/isissue/detail?id=197254#c15


Після цього у вашій Android Studio з’явиться підключений пристрій (у цьому випадку Nexus_5_API_23), коли ви намагаєтеся запустити додаток.
Алехо Бернардін

3
Це найкраща відповідь imo, оскільки емулятор можна запустити належним чином через скрипт оболонки, не потребуючи переміщення чи з'єднання існуючих бібліотек sdk.
Potaito

19
на Ubuntu 16.10 export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1потрібно додати$HOME/.profile
Грег Дан

невідомий варіант: -use-system-libs :(
Ярослав Заруба

1
@GregDan: або до/etc/environment
серв

123
$ cd Android/Sdk/emulator/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6

це працює для мене


1
Схоже, мені довелося встановити libstdc ++ і лише після цього я зміг запустити тренажер, Дякую за допомогу!
Піні Чейні

6
мій libstdc ++. so.6 як розміщено за адресою /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Джошуа

2
@Joshua - правильно. Для Ubuntu 17.10+ вам потрібен наступний крок для останнього кроку $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Тимофій К. Квін

Працювали для мене. Я хотів би знати, що це зламало.
Тобі Вілсон

Це рішення працює для мене. Емулятор зламався після оновлення з Ubuntu 16.04 до 18.04. Дякую!
ruX

52

У мене аналогічна помилка в 64-розрядному Ubuntu 16.04. Для мене рішення відповіді №23 чудово працює https://code.google.com/p/android/isissue/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter % 20Отворено & 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++

Це працювало для мене. Можливо, вам доведеться шукати в різних каталогах для вашого Android sdk, хоча. Шахта була знайдена в/home/daniel/Android/Sdk/tools/lib64/libstdc++
Даніель Левін

Так, шлях до розділу до "/ інструментів" може змінюватись залежно від імен користувачів та папки інсталяції Sdk.
luizMello

3
підтвердити роботу, в ubuntu xenial шлях /usr/lib/x86_64-linux-gnu/libstdc++.so.6
arisalexis

дякую .... це було рішення і в ubuntu 16.10, такий же шлях, як і у коментарі вище ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ~ / Android / Sdk / tools / lib64 / libstdc ++
Хуан

29

Використовуйте "Програмне забезпечення" в опції Емульована графіка продуктивності в налаштуваннях AVD. Дуже просте рішення.


Це просто, але дуже повільно :)
Шах

Робота над ubuntu 16 64bit, просто виберіть спадне меню :) 10x
Василь Валчев

Це було єдиним рішенням , яке працювало для мене (Ubuntu 16.04LTS)
Feu

20

я роблю це, і це працює

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

У мене виникла помилка завдяки моєму відеодрайверу, я перевстановив її пізніше і все почало працювати. Я вже забув про цю помилку, дуже дивно, що хтось все ще має проблеми, тому що шукає багато рішень, включаючи цю тему.
Шах

у мене просто ця помилка 10 хвилин тому :)
tetar

10

краще знайдіть систему за замовчуванням libstdc ++. so.6 за допомогою команди locate libstdc ++. so.6

А потім візьміть резервну копію версії файлу Android для sdk у ~ / Android / Sdk / tools / lib64 / libstdc ++ /

І створіть м'яке посилання для libstdc ++.

Таким чином, нам не потрібно перезапускати емулятор кожного разу з командного рядка.



0

У мене також було багато проблем із запуском AVD на моїй машині. Налагоджував використання системних бібліотек, створюючи посилання на локальні бібліотеки тощо ...

Що дійсно змусило мене працювати - це встановити драйвери nvidia

sudo apt install nvidia-340

Мій дистрибутив (зауважте, я не використовую 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

Переконайтеся, що ви перевірите підходящий для вас пакет nvidia, оскільки Ubuntu пропонує різні смаки. Наприклад:

$ 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

Я тестував список у стратегії знизу вгору, починаючи з 361, поки не знайшов той, який працював (у моєму випадку 340).

Сподіваюся, що це допомагає.


0

У моєму випадку (64-розрядна версія Ubuntu 16.10, Android Studio 2.3) лісти були розташовані в іншому місці. Отже команди:

/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

І тепер емулятор запускається звичайно від диспетчера AVD.


0

У мене були подібні проблеми з використанням, i965_dri.soі swrast_dri.soя не зміг перейти на графічну програму в графічному інтерфейсі.

Тому я зайшов у папку емулятора ( Show on Diskпосилання в AVDM) і знайшовconfig.ini

Тут я просто змінив наступний рядок, щоб не допустити використання GPU:

hw.gpu.enabled=no


-1

$ cd ~ / Android / Sdk / емулятор / lib64 / libstdc ++ $ mv libstdc ++. so.6 libstdc ++. so.6.bak $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc ++ так .6

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.