Не удается запустить эмулятор на Linux (Ubuntu 15.10)
Я пытаюсь запустить эмулятор, но он выводится в журнал:
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
Как это исправить? Я читал темы с похожими ошибками, но мне это не помогает.
Ответы
Ответ 1
Взгляните на
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
Затем запускается эмулятор, и вы можете выбрать его в диалоговом окне "Выбор устройства" при запуске приложения.
Ответ 2
Использование libstdС++. so.6, доступное в вашей системе, а не тот, который поставляется вместе с sroid sroid, решает эту проблему.
-
Для этого эмулятор имеет переключатель -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
Ответ 3
$ cd Android/Sdk/emulator/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6
это сработало для меня
Ответ 4
У меня аналогичная ошибка в 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++
Ответ 5
Используйте "Программное обеспечение" в параметре "Эмулированная производительность" в настройках AVD. Очень простое решение.
Ответ 6
лучше найти свой системный файл libstdС++. so.6 с помощью команды
найдите libstdС++. so.6
И затем возьмите резервную копию версии файла sroid sroid в файле ~/Android/Sdk/tools/lib64/libstdС++/
И создайте мягкую ссылку для libstdС++. so.6 с тем же именем в указанном выше пути, заменив существующий, указав на файл по умолчанию в системе
Таким образом, нам не нужно перезапускать эмулятор каждый раз из командной строки.
Ответ 7
Попробуйте изменить параметр графики в настройках эмулятора:
![введите описание изображения здесь]()
Ответ 8
У меня также было много проблем для запуска 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, в моем случае).
Надеюсь, что это поможет.
Ответ 9
В моем случае (Ubuntu 16.10 64-bit, 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-менеджера нормально.
Ответ 10
У меня были аналогичные проблемы с использованием i965_dri.so
и swrast_dri.so
, я не смог изменить графику программного обеспечения в графическом интерфейсе.
Итак, я пошел в папку эмулятора (Show on Disk
в AVDM) и нашел config.ini
Здесь я просто изменил следующую строку, чтобы остановить использование GPU:
hw.gpu.enabled=no