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

exception_noted
источник
И после этого в вашей 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. Очень простое решение.

Saintjab
источник
Это просто, но очень медленно :)
Шах
Работайте на 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 с тем же именем в указанном выше пути, заменив существующий, указывающий на файл по умолчанию в системе

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

BuzzR
источник
9

Попробуйте изменить параметр графики в настройках эмулятора: введите описание изображения здесь

Мохсен Каши
источник
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
Jkbadsberg
источник
-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 ++. so. .6

Рахул Бхардвадж
источник