2016-03-23 5 views
23

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

(АДВ конфигурации: Nexus 6P API 23 x86 - Аппаратно-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, и они не работают.

+0

это проблема водителя, я предполагаю, что у вас есть драйвер NVidia –

+0

Я, имеющий этот же вопрос, и я использую Драйверы AMD. Вы нашли исправление для этого? – dazza5000

+0

@ dazza5000 Nope:/ –

ответ

12

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

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

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

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

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

Edit:

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

#!/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 
+0

Я создал скрипт Python, который обеспечивает действительно базовый с помощью исправления: https://gist.github.com/NickGeek/1e125d7ca6aeff2d4e0e3ac2399bc14c – NStorm

+1

1) обязательно обновите TOOLS_PATH по своему пути. 2) сохранить этот скрипт вне каталога .../tools. 3) Запускать только один раз! (если вы запускаете дважды, вам нужно будет переустановить инструменты SDK), поскольку файлы будут заменены. Вам нужно будет выполнять его каждый раз, когда вы обновляете инструменты SDK (так что имейте это в виду) – lepe

44

вы также можете использовать «Программное обеспечение» в опции Emulated Производительность графики, в AVD настройки

+0

Это сработало для меня. Ubuntu 16.04 64-бит, Android Studio 2.1.2. –

+2

Простота в лучшем виде. Спасибо – saintjab

+0

Это сработало для меня. Debian 8.6 Jessie amd64, android studio 2.1.3 –

1

Ввод следующий в терминале (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 /).

0

У меня была такая же проблема на 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

Я тогда пробежал следующий f или каждый, который был возвращен:

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, и все сработало нормально.

+0

Я могу подтвердить, что использование драйвера Nvidia вместо драйвера nouveau помогает, но вам не нужно устанавливать каждую доступную версию драйвера Nvidia. Установите только последнюю версию, доступную для конфигурации вашего оборудования, иначе вы можете столкнуться с беспорядком в драйвере. – sfera

+0

Предупреждение: установка последнего драйвера Nvidia (nvidia-384) оставила мой черный экран после перезагрузки, пришлось сходить с другого компьютера и удалить этот драйвер, чтобы он мог нормально загружаться (KDE neon 5.12.2 на основе Ubuntu 16.04 LTS) , – legolas108

4

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

Эмулятор говорит, что проблема с загрузкой графического драйвера («ошибка libGL: не удалось загрузить драйвер: r600_dri.so»). Как объясняется here, похоже, что Google упакован с Android Studio старой версией одной библиотеки (libstdC++. 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 - Самый простой способ я нашел, чтобы установить переменную окружения, это изменить сценарий запуска Android Studio (studio.sh, в моем случае это внутри /Opt/Android-Stuido/бен), и добавить в начале этого:

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1 

UPDATE декабря 2017 года: у меня была такая же проблема с Debian Stretch и Android Studio 3.0.1 (такой же графической карты). Такое же решение работает для меня.

0

Я Ubuntu 16,04 андроид студии 3,

ln -s $Android/Sdk/emulator/lib64/libstdc++/libstdc++.so.6.0 $Android/Sdk/tools/lib64/libstdc++ 

я нашел свой libstdC++. So.6 в ~/Android/Sdk/Эмулятор/lib64/libstdC++/,

но андроид студия нашла ~/Android/Sdk/инструменты/lib64/libstdC++/

 Смежные вопросы

  • Нет связанных вопросов^_^