Баггі 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

андроїд-студія на цьому шляху opt/android-studio??
Arduino_Sentinel

Це трапляється і для мене на Ubuntu 17.04. @ Відповідь Arduino_Sentinel виправила це.
Ріміан

Відповіді:


49

У останніх оновленнях андроїд-студії Google використовує a 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++

12
Папка була ~/Android/Sdk/emulator/lib64/libstdc++для мене.
Кевін Бротке

42

У мене також була ця проблема на Ubuntu 17.04, і ось що я зробив.

Відредагуйте свій .profileулюблений текстовий редактор

atom ~/.profile

Додайте це в кінці файлу

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

Джерело: Android SDK


2
найкраще рішення
Володимир

Це не спрацювало на Ubuntu 17.10 з Android Studio 3.01. Я просто перейменував папку бібліотеки ~ / Android / Sdk / емулятор / lib64 / lib / libstdc ++, і вона спрацювала.
Вінсент Герріс

Працював для мене на Kubuntu 18.04. Велике спасибі!
Ванесса Діган

18

Запустіть емулятор з терміналу

emulator -use-system-libs -avd YOUR_VIRTUAL_DEVICE_NAME

1
Чи є спосіб зробити це за замовчуванням, тому мені не потрібно запускати його з терміналу?
karora

1
@karora дивіться відповідь
jasperagrante

@AltianoGerung Так, оскільки я вже обертаю Android Studio в оболонку сценарію, я закінчив встановити там змінну ...
karora

4

Ще одне просте рішення - перейменувати libstdc ++ у папку емулятора в каталозі sdk Android. Він буде відновлюватись до системних вкладок (їх потрібно встановити). Це "просто працювало" для мене на Ubuntu 17.10.


Ха-ха, це смішно!
Кеннет Вірден

Що ви маєте на увазі :)? Я особисто не розумію, чому Google передає це так. Параметр use-system-libs для мене не працював, тому здається, що це дійсне рішення, просто потрібно це зробити ще раз, коли емулятор оновлюється.
Вінсент Герріс

2

Оновіть емулятор.

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

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

Це помилка, яку виправляють у 27.2.9.

Версія Linux для емулятора Android тепер побудована за допомогою сучасної панелі інструментів Clang C ++. Ця зміна виправляє помилку запуску емулятора через помилки libGL та libstdc ++.


FYI: BTW створення вручну символьних посилань - це не дуже гарна ідея.

Постановка ANDROID_EMULATOR_USE_SYSTEM_LIBS- це кращий підхід. Однак це також не обов'язково, коли ви могли просто оновити емулятор.


1

Я переключив прискорення графіки з автоматичного / апаратного на програмне забезпечення. Драйвери, які викликають цю проблему, потрібні лише для використання справжнього обладнання для прискорення графіки. Якщо ви не працюєте над грою чи іншим інтенсивним графічним програмним забезпеченням, вам це зовсім не потрібно. Це потрібно зробити на кожному рекламному ресурсі, але залишається встановленим, як тільки буде зроблено.


-1

Довідка за цим посиланням . Я змінив місце розташування libstdc ++, тому на основі моєї установки Ubuntu 17.10. Розташування файлу libstdc ++ було іншим. Шукайте на своєму комп’ютері 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 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.