Eu tenho a solução por meio de uma solução alternativa!
A opção tl; dr version : -use-system-libs
com o emulador é uma solução temporária.
versão mais longa :
Pesquisando incompatibilidade de frequência TSC não deu nenhuma idéia do que poderia causar o problema. Desativar a aceleração de HW foi uma correção possível, mas o resultado é uma emulação lenta. Eu dei um descanso, mas depois percebi que isso deveria ser um problema relacionado ao kernel, já que era o KVM que parecia causar o problema. Eu tentei desativar o driver de microcódigo da Intel (sem ajuda) e uma atualização do kernel (não ajuda), mas depois da última, pelo menos eu recebi mensagens de erro menos enigmáticas, como:
21:31 Emulator: libGL error: unable to load driver: i965_dri.so
21:31 Emulator: libGL error: driver pointer missing
21:31 Emulator: libGL error: failed to load driver: i965
21:31 Emulator: libGL error: unable to load driver: i965_dri.so
21:31 Emulator: libGL error: driver pointer missing
21:31 Emulator: libGL error: failed to load driver: i965
21:31 Emulator: libGL error: unable to load driver: swrast_dri.so
21:31 Emulator: libGL error: failed to load driver: swrast
21:31 Emulator: X Error of failed request: BadValue (integer parameter out of range for operation)
21:31 Emulator: Major opcode of failed request: 155 (GLX)
21:31 Emulator: Minor opcode of failed request: 24 (X_GLXCreateNewContext)
21:31 Emulator: Value in failed request: 0x0
21:31 Emulator: Serial number of failed request: 64
21:31 Emulator: Current serial number in output stream: 65
21:31 Emulator: Process finished with exit code 1
Então, isso deve ser um problema de driver! Ao pesquisar na primeira mensagem de erro, ele me deu esse hit , usando -use-system-libs
com o emulador. Está funcionando agora! Mas como torná-lo permanente? Esta página também apontou para a direção certa: use um script de wrapper para iniciar o emulador. Agora tudo funciona como um encanto.
Então, solução passo-a-passo:
- no terminal:
/home/$user/Android/Sdk/emulator/emulator -list-avds
para encontrar seus AVD-s - os nomes podem ser diferentes daqueles aparentes no Android Studio. Encontre o nome do AVD com o qual você tem problemas. Observe que o caminho do emulador também pode ser diferente, com base no caminho que você especificou durante a instalação do AStudio. - teste se o seguinte funcionar como uma solução manual:
/home/$user/Android/Sdk/emulator/emulator -avd your_emulator_name_here -use-system-libs
-
se (2) funcionar para você, renomeie o arquivo do emulador original e inicie-o a partir de um shell script para o lançamento permanente do sinalizador de opção (seu caminho e editor de texto podem ser diferentes):
$ cd /home/$user/Android/Sdk/emulator/ $ mv emulator emulator.0 $ touch emulator $ chmod +x emulator $ kate emulator
insira o seguinte e salve:
#!/bin/sh
set -ex
$0.0 $@ -use-system-libs
Agora, toda vez que o emulador é chamado, ele é feito com as bibliotecas do sistema através do script shell chamado emulador , e não deve dar erros a partir de agora.