Linux (Ubuntu 15.10)에서 에뮬레이터를 시작할 수 없음


103

에뮬레이터를 시작하려고하지만 로그에 출력됩니다.

libGL error: unable to load driver: r600_dri.so 
libGL error: driver pointer missing 
libGL error: failed to load driver: r600 
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: r600_dri.so 
libGL error: driver pointer missing 
libGL error: failed to load driver: r600 
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: r600_dri.so 
libGL error: driver pointer missing 
libGL error: failed to load driver: r600
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 emulator: WARNING: Increasing RAM size to 1GB

그것을 고치는 방법? 비슷한 오류가있는 주제를 읽었지만 도움이되지 않습니다.


이 답변에 제공된 추가 라인이없는 편리한 솔루션을 여기에서 찾으십시오. [ github.com/rimian/cordova-ember-android]
refle

답변:


79

보세요

https://code.google.com/p/android/issues/detail?id=197254

특히 항목 # 3 및 # 19. 이것은 진정한 해결책이 아닌 해결 방법이지만 다시 움직이게했습니다. 다음에 대한 명령을 조정해야합니다.

  • libstdc++.so.6시스템 에있는 파일 의 위치 -나는 locate libstdc++.so.6이것을 찾는 데 사용
  • 에뮬레이터 실행 파일의 경로
  • 에뮬레이터의 이름

그래서 내 명령은

LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -netdelay none -netspeed full -avd Nexus_5_API_21

그러면 에뮬레이터가 시작되고 앱을 실행할 때 'Device Chooser'대화 상자에서 선택할 수 있습니다.


감사합니다! 하지만 제 경우에는 OS에 fglrx 패키지를 설치했지만 작동하지 않습니다. 하지만 시스템 업데이트 후이 버그가 발생했습니다. 이 패키지를 다시 설치했고 다시 작동하게되었습니다. :) 영어 죄송합니다.
Шах

링크의 게시물 # 23에 설명 된 수정 사항으로 인해 내 에뮬레이터가 Ubuntu 16.04에서 실행될 수 있었지만 에뮬레이터 화면에는 검은 색 만 표시됩니다.
dazza5000

5
나는 추한 방법으로 문제를 해결 : cp /usr/lib/x86_64-linux-gnu/libstdc++.so.6 $ANDROID_HOME/tools/lib/libstdc++/libstdc++.so.6
유 Jiaao에게

그것은 도움이 경우에, 당신은 함께 에뮬레이터의 이름을 찾을 수 있습니다LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libstdc++.so.6' ~/Android/Sdk/tools/emulator -list-avds
DaveyDaveDave

170

android sdk와 함께 번들로 제공되는 대신 시스템에서 사용 가능한 libstdc ++. so.6을 사용하면이 문제가 해결됩니다.

  • 에뮬레이터에는이를위한 스위치 -use-system-libs가 있습니다.

    ~/Android/Sdk/tools/emulator -avd Nexus_5_API_23 -use-system-libs

  • 또는 사용자 / 시스템 ANDROID_EMULATOR_USE_SYSTEM_LIBS1대해 환경 변수를 로 설정할 수 있습니다 . 이는 Android Studio 내에서 실행 한 경우에도 에뮬레이터가 작동하는지 확인하는 이점이 있습니다.

자세한 내용 : https://code.google.com/p/android/issues/detail?id=197254#c15


그 후 Android Studio에서 앱을 실행하려고하면 연결된 기기 (이 경우 Nexus_5_API_23)가 표시됩니다.
Alejo Bernardin

3
기존 sdk 라이브러리를 이동하거나 링크 할 필요없이 쉘 스크립트를 통해 에뮬레이터를 제대로 실행할 수 있으므로 이것이 가장 좋은 대답입니다.
Potaito 2016 년

19
우분투 16.10에 export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1추가해야합니다$HOME/.profile
Greg Dan

알 수없는 옵션 : -use 시스템-libs와 :(
야로슬라프 Záruba

1
@GregDan : 나에/etc/environment
SERV-INC

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

그것은 나를 위해 일했다


1
libstdc ++를 설치해야하는 것 같습니다. 그 후에야 시뮬레이터를 실행할 수있었습니다. 도와 주셔서 감사합니다!
Pini Cheyni

6
/usr/lib/x86_64-linux-gnu/libstdc++.so.6에있는 내 libstdc ++. so.6
Joshua

2
@Joshua-맞습니다. 우분투 17.10+를 들어, 마지막 단계 $ LN -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6에 대해 다음 필요
디모데 C. 퀸

나를 위해 일했습니다. 나는 그것을 깨뜨린 것이 무엇인지 알고 싶습니다.
Toby Wilson

이 솔루션은 저에게 효과적입니다. Ubuntu 16.04에서 18.04로 업데이트 한 후 에뮬레이터가 중단되었습니다. 감사!
ruX

52

Ubuntu 16.04 64 비트에서 비슷한 오류가 있습니다. 저에게 대답 # 23 솔루션은 훌륭하게 작동합니다. https://code.google.com/p/android/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Status%20Priority%20Owner%20Summary%20Stars%20Reporter % 20Opened & groupby = & sort = & id = 197254

$ cd $ANDROID_HOME/android-sdk-linux_x86/tools/lib64/libstdc++
$ mv libstdc++.so.6 libstdc++.so.6.bak
$ ln -s /usr/lib64/libstdc++.so.6 $ANDROID_HOME/android-sdk-linux_x86/tools/lib64/libstdc++

이것은 나를 위해 일했습니다. 그래도 Android SDK에 대해 다른 디렉토리를 찾아야 할 수도 있습니다. 광산에서 발견되었다/home/daniel/Android/Sdk/tools/lib64/libstdc++
다니엘 레빈

예, "/ tools"앞의 섹션 경로는 사용자 이름과 Sdk 설치 폴더에 따라 다를 수 있습니다.
luizMello

3
작동 확인, 우분투 xenial에서 경로는 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
arisalexis

감사합니다 .... 이것은 우분투 16.10에서도 해결책이었습니다. 위의 주석에서와 동일한 경로 ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 ~ / Android / Sdk / tools / lib64 / libstdc ++
Juan

29

AVD 설정의 Emulated Performance Graphics 옵션에서 "소프트웨어"를 사용합니다. 아주 간단한 해결책.


간단하지만 매우 느립니다. :)
Шах

우분투 16 64 비트에 대한 작업, 그냥 :) 10 배 선택 드롭 다운
바실 Valchev에게

그것이 저에게 효과가 있었던 유일한 솔루션이었습니다 (Ubuntu 16.04LTS)
Feu

20

나는 이것을하고 작동한다

cd ~/Android/Sdk/emulator/lib64/libstdc++ 
mv libstdc++.so.6 libstdc++.so.6.bak
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc++.so.6

비디오 드라이버로 인해이 버그가 있었는데 나중에 다시 설치했고 모두 작동하기 시작했습니다. 나는 이미이 버그를 잊었다. 누군가가이 주제를 포함한 많은 해결책을 찾는데 여전히 문제가 있다는 것은 매우 이상하다.
Шах

난 그냥 10 분 전에이 버그 :이
tetar

10

find libstdc ++. so.6 명령을 사용하여 시스템 기본 libstdc ++. so.6을 더 잘 찾습니다.

그런 다음 ~ / Android / Sdk / tools / lib64 / libstdc ++ /에있는 파일의 Android sdk 버전을 백업합니다.

그리고 시스템의 기본 파일을 가리키는 기존 경로를 대체하는 위 경로에 동일한 이름으로 libstdc ++. so.6에 대한 소프트 링크를 만듭니다.

이렇게하면 명령 줄에서 매번 에뮬레이터를 다시 시작할 필요가 없습니다.



0

또한 내 컴퓨터에서 AVD를 시작하는 데 많은 문제가있었습니다. 시스템 라이브러리 사용, 로컬 라이브러리에 대한 심볼릭 링크 생성 등에 어려움을 겪습니다.

나를 위해 실제로 작동하게 만든 것은 nvidia 드라이버를 설치하는 것이 었습니다.

sudo apt install nvidia-340

내 배포판 (Ubuntu 15.10을 사용하지 않습니다) :

$ uname -a
Linux ruapehu 4.4.0-38-generic #57-Ubuntu SMP Tue Sep 6 15:42:33 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/issue
Ubuntu 16.04.1 LTS \n \l

Ubuntu는 다양한 맛을 제공하므로 적합한 nvidia 패키지를 확인하십시오. 예를 들면 :

$ sudo apt list "nvidia-[0-9][0-9][0-9]" 
Listing... Done
nvidia-304/xenial 304.131-0ubuntu3 amd64
nvidia-331/xenial 340.96-0ubuntu3 amd64
nvidia-340/xenial,now 340.96-0ubuntu3 amd64 [installed]
nvidia-346/xenial 352.63-0ubuntu3 amd64
nvidia-352/xenial 361.42-0ubuntu2 amd64
nvidia-361/xenial,now 361.42-0ubuntu2 amd64

나는 361에서 작동하는 것을 찾을 때까지 (제 경우 340) 상향식 전략으로 목록을 테스트했습니다.

도움이 되었기를 바랍니다.


0

제 경우에는 (Ubuntu 16.10 64 비트, Android Studio 2.3) libs가 다른 위치에있었습니다. 따라서 명령은 다음과 같습니다.

/home/myusername/Android/Sdk/emulator/lib64/libstdc++

➜  libstdc++ ll
total 9,3M
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.0.18

➜  libstdc++ mv libstdc++.so.6 libstdc++.so.6.bak
➜  libstdc++ mv libstdc++.so.6.0.18 libstdc++.so.6.0.18.bak
➜  libstdc++ ln -s /usr/lib32/libstdc++.so.6 /home/myusername/Android/Sdk/emulator/lib64/libstdc++ 
➜  libstdc++ ln -s /usr/lib32/libstdc++.so.6.0.22 /home/myusername/Android/Sdk/emulator/lib64/libstdc++ 

➜  libstdc++ ll
total 9,3M
lrwxrwxrwx 1 myusername myusername   25 мар 29 13:18 libstdc++.so.6 -> /usr/lib32/libstdc++.so.6
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.0.18.bak
lrwxrwxrwx 1 myusername myusername   30 мар 29 13:19 libstdc++.so.6.0.22 -> /usr/lib32/libstdc++.so.6.0.22
-rwxr-xr-x 1 myusername myusername 4,6M мар 21 00:09 libstdc++.so.6.bak

이제 에뮬레이터가 AVD 관리자에서 정상적으로 시작됩니다.


0

내가 사용하여 유사한 문제가 있었다 i965_dri.so그리고 swrast_dri.so나는 GUI에서 소프트웨어 그래픽으로 변경 할 수 없습니다.

그래서 에뮬레이터의 폴더 ( Show on DiskAVDM의 링크)로 이동하여config.ini

여기서는 GPU 사용을 중지하기 위해 다음 줄을 변경했습니다.

hw.gpu.enabled=no


-1

$ cd ~ / Android / Sdk / emulator / lib64 / libstdc ++ $ mv libstdc ++. so.6 libstdc ++. so.6.bak $ ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 libstdc ++. so .6

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.