Эмулятор Android не работает в Linux из-за libGL
Я использовал несколько дистрибутивов Linux (Ubuntu, Deepin и т. Д.) И сейчас использую KDE Neon User Edition. Когда я хочу использовать эмулятор Android, я не могу. Потому что эмулятор Android не работает на всех дистрибутивах Linux для меня. Информация: Мои выводы:
user@username-PC:~/Android/Sdk/tools$ ./emulator -accel-check
accel:
0
KVM (version 12) is installed and usable.
accel
user@username-PC:~/Android/Sdk/tools$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
user@username-PC:~/Android/Sdk/tools$ egrep -c '(vmx|svm)' /proc/cpuinfo
4
Когда я запускаю эмулятор Android, я получаю эту ошибку:
emulator: WARNING: Not all modern X86 virtualization features supported, which introduces problems with slowdown when running Android on multicore vCPUs. Setting AVD to run with 1 vCPU core only.
libGL error: unable to load driver: nouveau_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: nouveau
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: 58
Current serial number in output stream: 59
Когда я устанавливаю параметр для многоядерного процессора равным 1:
libGL error: unable to load driver: nouveau_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: nouveau
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: 58
Current serial number in output stream: 59
Когда я изменяю настройку Графика как Программное обеспечение - GLES 2.0 (по умолчанию: Автоматически), я получаю это:
1 ответ
Использование системы libstdC++ решает проблему
Например:
cd ~/Android/Sdk/tools
./emulator -avd Nexus_5X_API_27 -use-system-libs
Если это работает правильно, установите следующую переменную в ~/.bashrc
:
export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1
Войдите или source ~.bashrc
, Затем вы можете опустить -use-system-libs
опция:
./emulator -avd Nexus_5X_API_27
Этот метод не работает, когда эмулятор вызывается из Android Studio. Вот обходной путь
Создать сценарий оболочки android-studio.sh
в каталоге, доступном в вашем PATH
, Например ~/bin
со следующим содержанием:
#!/bin/bash
export ANDROID_EMULATOR_USE_SYSTEM_LIBS=1
~/Programs/android-studio/bin/studio.sh %f
а затем обновите команду запуска в
~/.local/share/applications/jetbrains-studio.desktop
указать на ~/bin/android-studio.sh
,