Подтвердить что ты не робот

Запуск Android Studio AVD

У меня есть эмулятор Nexus 6P API23, загруженный на моем ПК Ubuntu 15.10. Когда я пытаюсь запустить его, он выходит из строя, и появляется диалоговое окно и говорит:

(AVD config: Nexus 6P API 23 x86 - Графика Hardware-GLES 2.0)

Cannot launch AVD in emulator.
Output:
libGL error: unable to load driver: nouveau_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: nouveau
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: nouveau_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: nouveau
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: nouveau_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: nouveau
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

Я пробовал другие AVD, и они не работают.

4b9b3361

Ответ 1

вы также можете использовать "Программное обеспечение" в опции "Эмулированная графика производительности" в настройках AVD

Ответ 2

У меня была такая же ошибка, как и у вас, и мне удалось найти обходной путь. Надеюсь, это также решит вашу проблему.

Вместо запуска эмулятора из Android Studio откройте терминал и cd в каталог инструментов с вашим каталогом Android SDK - mine - ~/Android/Sdk/tools. Оттуда выполните команду:

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 ./emulator -avd <insert avd name here>

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

Для получения дополнительной информации о том, почему это работает, перейдите здесь

Edit:

После некоторой мысли я попробовал этот script и, похоже, работает, чтобы вы могли запустить эмулятор в Android Studio. Он заменяет исполняемый файл эмулятора bash script, который вызывает его, как указано выше. Вам нужно будет перейти на путь к правильному местоположению. Я также предлагаю сделать резервную копию каталога ваших инструментов в случае, если что-то пойдет не так:

#!/bin/bash

TOOLS_PATH='/home/user/Android/Sdk/tools'
UNEXPANDED_LIB='$LIB'

for emul in ${TOOLS_PATH}/em*
do
cp ${emul} ${emul}-orig
cat <<EOF > ${emul}
#!/bin/bash
LD_PRELOAD='/usr/$UNEXPANDED_LIB/libstdc++.so.6' ${emul}-orig "\[email protected]"
EOF
done

Ответ 3

Мое дело: я работаю с Debian Jessie и Android Studio 2.2.3. Моя графическая карта - ATI Radeon HD 6850 от Sapphire.

Эмулятор говорит о том, что при загрузке драйвера графическая ошибка ( "ошибка libGL: невозможно загрузить драйвер: r600_dri.so" ). Как объясняется здесь, похоже, что Google упакован с Android Studio старой версией одной библиотеки (libstdС++. So.6) и эмулятор не работает, когда он пытается использовать графическую карту.

Решение? Очень просто: использовать системные библиотеки вместо пакетов в Android Studio. Как? Добавление "-use-system-libs" в конце команды. Итак:

./emulator -avd EMULATOR_NAME -netspeed full -netdelay none -use-system-libs

Окончательное решение (если вы не хотите использовать терминал) должно установить переменную среды ANDROID_EMULATOR_USE_SYSTEM_LIBS в 1 для вашего пользователя/системы. С этим изменением, когда вы запускаете эмулятор в Android Studio, он также загружает системные библиотеки вместо упакованных.

PS - Самый простой способ установить переменную среды - изменить script, который запустит Android Studio (studio.sh, в моем случае это внутри /opt/android -stuido/bin) и добавьте в начале этого:

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

ОБНОВЛЕНИЕ Декабрь 2017 года. У меня была такая же проблема с Debian Stretch и Android Studio 3.0.1 (та же самая графическая карта). Такое же решение работает для меня.

Ответ 4

Ввод следующего в терминале (Ctrl-Alt-T) решил для меня:

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

Это, по-видимому, создает символическую ссылку. Это решение было взято из строки № 23 https://code.google.com/p/android/issues/detail?id=197254#c23.

Возможно, вам придется изменить пути к файлам в зависимости от вашей установки (т.е. оригинал использовал путь ANDROID_HOME/android-sdk-linux_x86/, тогда как моя установка была только Android/Sdk/).

Ответ 5

У меня была такая же проблема на Ubuntu 16.04 LTS и Android Studio 2.3.2, и я решил проблему, выполнив следующее в окне терминала: (ПРИМЕЧАНИЕ: я видел это где-то в Интернете, но я не могу вспомнить, где я не могу дать кредит, когда кредит должен быть)

sudo apt list "*nvidia-[0-9][0-9][0-9]"

мой ответ: nividia-346 nividia-352 nividia-361 nividia-367 nividia-375

Затем я выполнил следующее для каждого возвращаемого значения:

sudo apt install nvidia-375
sudo apt install nvidia-367
sudo apt install nvidia-361
sudo apt install nvidia-352
sudo apt install nvidia-346

Затем перезагрузите Ubuntu, и все работает нормально.