No seguimento do artigo Novo Guia de Desenvolvimento para Android, e depois de me ter surgido novamente um problema já documentado nesse artigo, exponho aqui a solução para a dificuldade de correr um emulador na configuração aà descrita.
Esta semana decidi atualizar o sistema (kernel, bibliotecas, gcc, etc) da máquina onde tenho o ambiente de desenolvimento em Linux para Android com o Android Studio. Quando, mais tarde, tentei executar um emulador, recebi a mensagem:
Failed to start emulator: Cannot run program “/usr/local/android-sdk-linux/tools/emulator”
Mas esse programa existia e era executável. E já tinha funcionado imensas vezes anteriormente. Depois de uma pesquisa aturada na net@, confimei as minhas suspeitas: faltavam bibliotecas ao sistema.
Quando instalei, pela primeira vez, o ambiente de desenvolvimento para Android em Linux 64 bits, descobri que era preciso ter suporte para bibliotecas de 32 bits para correr o emulador.
Agora, depois da atualização da máquina, é necessário corrigir o problema de novo.
Para resolver esse problema no Slackware, há uma sequência de instruções do Eric Hameleers que adicionam capacidade multilib para o Slackware x86_64. Na altura, não coloquei aqui as instruções, mas agora vou colocar.
# SLACKVER=current # cd /usr/local # mkdir multilib # cd multilib # lftp -c "open http://taper.alienbase.nl/mirrors/people/alien/multilib/ ; mirror -c -e ${SLACKVER}" # cd ${SLACKVER} # upgradepkg --reinstall --install-new *.t?z # upgradepkg --install-new slackware64-compat32/*-compat32/*.t?z # upgradepkg --install-new debug/*.t?z
Para além disso, é necessário instalar suporte para virtualização em hardware. No caso do Slackware, o site seguinte explica o que fazer: KVM and libvirt
Na prática é necessário ir buscar os 3 pacotes seguintes, compilá-los e instalá-los: yajl urlgrabber libvirt
Por fim, é necessário colocar o código seguinte no ficheiro /etc/rc.d/rc.local e executá-lo antes de lançar um emulador:
# start libvirt if [ -x /etc/rc.d/rc.libvirt ]; then /etc/rc.d/rc.libvirt start fi