16.10으로 업그레이드 한 후 Android 스튜디오 버기


31

나는 최근에 안드로이드 스튜디오가 16.10으로 잘 작동하는 16.04 LTS에서 업그레이드되었지만 내 DVD 에뮬레이터를 실행하려고하면 오류 로그입니다.

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

이것은 우분투 17.04에서도 발생합니다. @Arduino_Sentinel의 답변으로 해결되었습니다.
Rimian

답변:


49

최근 Android Studio 업데이트에서 Google libstdc++은 시스템에 설치된 인텔 드라이버와 호환되지 않는를 사용 합니다

먼저 존재하지 않을 경우 시스템에 다음 패키지를 설치해야 lib64stdc++6하고mesa-utils

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

그런 다음 라이브러리를 안드로이드 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++나를 위해 있었다.
Kevin Brotcke

42

우분투 17.04 에서도이 문제가 있었고 여기에 내가 한 일이 있습니다.

당신이 편집 .profile자주 사용하는 텍스트 편집기를 사용하여

atom ~/.profile

파일의 끝에 이것을 추가하십시오

export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1

출처 : Android SDK 환경 변수


2
최고의 솔루션
Vladimir

Android Studio 3.01의 Ubuntu 17.10에서는 작동하지 않았습니다. 방금 라이브러리 폴더 이름을 ~ / Android / Sdk / emulator / lib64 / lib / libstdc ++로 바꾸고 작동했습니다.
Vincent Gerris

Kubuntu 18.04에서 나를 위해 일했습니다. 대단히 감사합니다!
Vanessa Deagan

18

터미널에서 에뮬레이터 실행

emulator -use-system-libs -avd YOUR_VIRTUAL_DEVICE_NAME

1
이것을 기본값으로 설정하는 방법이 있습니까? 따라서 터미널에서 실행할 필요가 없습니까?
karora 2016 년

1
@karora jasperagrante의 답변 참조
Altiano Gerung

@AltianoGerung 네, 이미 쉘 스크립트로 안드로이드 스튜디오를 포장했기 때문에 변수를 설정했습니다.
karora

4

또 다른 간단한 해결 방법은 Android SDK 디렉토리의 에뮬레이터 폴더에서 libstdc ++의 이름을 바꾸는 것입니다. 시스템 라이브러리로 대체됩니다 (설치해야 함). 그것은 우분투 17.10에서 나를 위해 '방금 작동했습니다.


하하 이건 말도 안돼!
Kenneth Worden

:) 무슨 의미인가요? 개인적으로 Google이 왜 이런 식으로 배송하는지 이해하지 못합니다. use-system-libs 옵션이 작동하지 않았으므로 유효한 해결 방법처럼 보입니다. 에뮬레이터가 업데이트 될 때 다시 수행해야합니다.
Vincent Gerris

2

에뮬레이터를 업데이트하십시오.

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

여기에 이미지 설명을 입력하십시오

이것은 27.2.9에서 수정 된 버그입니다.

Android 버전의 Android 에뮬레이터는 이제 최신 Clang C ++ 툴체인을 사용하여 빌드되었습니다. 이 변경은 libGL 및 libstdc ++ 오류로 인해 에뮬레이터가 시작되지 않는 문제를 해결합니다.


참고 : BTW에서 수동으로 심볼릭 링크를 만드는 것은 좋지 않습니다.

설정 ANDROID_EMULATOR_USE_SYSTEM_LIBS이 더 나은 방법입니다. 그러나 에뮬레이터를 업데이트 할 때도 필요하지 않습니다.


1

그래픽 가속을 자동 / 하드웨어에서 소프트웨어로 전환했습니다. 이 문제를 일으키는 드라이버는 그래픽 가속을 위해 실제 하드웨어를 사용하기 만하면됩니다. 게임이나 기타 그래픽 집약적 소프트웨어를 사용하지 않는 한 실제로는 필요하지 않습니다. 이것은 각각의 전진에서 수행되어야하지만 한 번 설정되면 유지됩니다.


-1

링크는 도움이됩니다. 우분투 17.10 설치에 따라 libstdc ++. so의 위치를 ​​수정했습니다. libstdc ++. so 파일 위치가 다릅니다. 컴퓨터에서 libstdc ++. so를 검색하십시오

우분투 17.10 및 안드로이드 스튜디오 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 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.