태그 보관물: ubuntu-15.10

ubuntu-15.10

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

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

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

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



답변

보세요

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’대화 상자에서 선택할 수 있습니다.


답변

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


답변

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

그것은 나를 위해 일했다


답변

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++


답변

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


답변

나는 이것을하고 작동한다

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


답변

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

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

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

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