Не удается запустить эмулятор в 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/issues/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
Yu Jiaao

В случае, если это будет полезно, вы можете найти имя эмулятора с помощью: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/issues/detail?id=197254#c15.


И после этого в вашей Android Studio появится подключенное устройство (в данном случае Nexus_5_API_23), когда вы попытаетесь запустить приложение.
Alejo Bernardin

3
Это лучший ответ, imo, поскольку эмулятор может быть запущен правильно через сценарий оболочки без необходимости перемещать или связывать существующие библиотеки sdk.
Potaito 02

19
на Ubuntu 16.10 export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1должен быть добавлен$HOME/.profile
Грег Дэн

неизвестный вариант: -use-system-libs :(
Ярослав

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

это сработало для меня


1
Похоже, мне пришлось установить libstdc ++, и только после этого я смог запустить симулятор. Спасибо за вашу помощь!
Пини Чейни

6
мой libstdc ++. so.6, расположенный по адресу /usr/lib/x86_64-linux-gnu/libstdc++.so.6
Джошуа

2
@ Джошуа - Верно. Для 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/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter % 20Opened & 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++
Даниэль Левин

Да, путь к разделу перед «/ tools» может варьироваться в зависимости от имен пользователей и папки установки 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, просто выберите в раскрывающемся
Василь

Это было единственным решением , которое работало для меня (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 ++. So.6 с тем же именем в указанном выше пути, заменив существующий, указывающий на файл по умолчанию в системе

Таким образом, нам не нужно каждый раз перезапускать эмулятор из командной строки.



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 manager нормально.


0

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

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

Здесь я просто изменил следующую строку, чтобы он не использовал графический процессор:

hw.gpu.enabled=no


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.