Android студия глючит после обновления до 16.10

31

Я недавно обновился с 16.04 LTS, где моя Android-студия работала нормально до 16.10, но при попытке запустить мои эмуляторы avd, это журнал ошибок, который я получаю вместо

Cannot launch AVD in emulator.
Output:
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
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:  55
  Current serial number in output stream:  54
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
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 r
user637425
источник
андроид студия на этом пути opt/android-studio??
Arduino_Sentinel
Это происходит для меня на Ubuntu 17.04 также. Ответ @ Arduino_Sentinel исправил это.
Римиан

Ответы:

49

В последних обновлениях Android Studio, Google использует, libstdc++который несовместим с драйвером Intel, установленным в системе

Сначала вы должны установить следующие пакеты, если их нет в системе lib64stdc++6иmesa-utils

sudo apt-get install lib64stdc++6 mesa-utils

Затем сделайте символическую ссылку на библиотеку на путь инструментов Android SDK.

## For the /Sdk/tools path

cd ~/Android/Sdk/tools/lib64/libstdc++
# making a copy of the file
sudo mv libstdc++.so.6 libstdc++.so.6.og
# symlink
sudo ln -s /usr/lib64/libstdc++.so.6 ~/Android/Sdk/tools/lib64/libstdc++

## For the /Sdk/emulator path

cd ~/Android/Sdk/emulator/lib64/libstdc++
# making a copy of the file
sudo mv libstdc++.so.6 libstdc++.so.6.og 
# symlink
sudo ln -s /usr/lib64/libstdc++.so.6 ~/Android/Sdk/emulator/lib64/libstdc++
Arduino_Sentinel
источник
12
Папка была ~/Android/Sdk/emulator/lib64/libstdc++для меня.
Кевин Бротке
42

У меня также была эта проблема на Ubuntu 17.04, и вот что я сделал.

Отредактируйте ваш, .profileиспользуя ваш любимый текстовый редактор

atom ~/.profile

Добавить это в конец файла

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

Источник: Android SDK Переменная среды

jasperagrante
источник
2
лучшее решение
Владимир
Это не сработало в Ubuntu 17.10 с Android Studio 3.01. Я просто переименовал папку библиотеки ~ / Android / Sdk / emulator / lib64 / lib / libstdc ++, и это сработало.
Винсент Джеррис
Работал для меня на Kubuntu 18.04. Большое спасибо!
Ванесса Диган
18

Запустите эмулятор из терминала

emulator -use-system-libs -avd YOUR_VIRTUAL_DEVICE_NAME
katenzo
источник
1
Есть ли способ сделать это по умолчанию, поэтому мне не нужно запускать его из терминала?
Карора
1
@karora см. ответ
Ясперагранте
@AltianoGerung да, так как я уже обернул Android Studio в сценарий оболочки, я закончил тем, что установил переменную там ...
karora
4

Другой простой обходной путь - переименовать libstdc ++ в папке эмулятора в каталоге Android SDK. Откат к системным библиотекам (необходимо установить). Это «просто сработало» для меня в Ubuntu 17.10.

Винсент Джеррис
источник
Ха-ха, это смешно!
Кеннет Уорден
Что вы имеете в виду :)? Я лично не понимаю, почему Google отправляет это так. Опция use-system-libs у меня не сработала, поэтому кажется, что это верный обходной путь, просто нужно сделать это снова при обновлении эмулятора.
Винсент Джеррис
2

Обнови эмулятор.

Tools -> SDK Manager -> SDK Tools -> Android Emulator

введите описание изображения здесь

Это ошибка, которая исправлена ​​в 27.2.9.

Версия Android Emulator для Linux теперь создается с использованием современного набора инструментов Clang C ++. Это изменение устраняет проблему, из-за которой эмулятор не запускается из-за ошибок libGL и libstdc ++.


К вашему сведению: Кстати, создание символических ссылок вручную - не очень хорошая идея.

Настройка ANDROID_EMULATOR_USE_SYSTEM_LIBS- лучший подход. Однако в этом нет необходимости, когда вы можете просто обновить эмулятор.

Гаян Виракутти
источник
1

Я переключил графическое ускорение с автоматического / аппаратного обеспечения на программное обеспечение. Драйверы, которые вызывают эту проблему, необходимы только для использования реального оборудования для ускорения графики. Если вы не работаете над игрой или другим графическим программным обеспечением, вам это не нужно. Это должно быть сделано на каждом авизе, но остается установленным, как только сделано.

wheredidthatnamecomefrom
источник
-1

Эта ссылка поможет. Я изменил расположение libstdc ++. Так, основываясь на моей установке Ubuntu 17.10. В libstdc ++. So расположение файла было другим. Найдите на своем компьютере libstdc ++.

Ubuntu 17.10 и Android Studio 3.1

cd /opt/android-sdk/emulator/lib64/libstdc++
mv libstdc++.so.6{,.bak}
mv libstdc++.so.6.0.19{,.bak}
ln -s /usr/lib/gcc/x86_64-linux-gnu/7/libstdc++.so 
Скотт
источник