Acelerando seu emulador Android
Todo mundo que desenvolve apps para o Android sabe que o emulador é bem lento. No entanto, isso pode mudar se você utiliza um computador com um processador da Intel que tenha a tecnologia Intel Virtualization.
A melhoria é muito grande. Só para dar uma ideia, no meu notebook a lockscreen abriu em 10 segundos usando o AVD com o processador Intel e em 57 segundos usando o AVD com o processador ARM-based!
No site da Intel você encontra a documentação mostrando como fazer isso em ambientes Windows, Mac OS e Linux. Contudo, fiz minha versão em português, com algumas outras dicas e específica para Linux. Eu utilizei o Linux Mint 15, mas provavelmente funciona da mesma maneira no Ubuntu.
Em primeiro lugar, você tem que ter a SDK do Android instalada é claro. Se não for o caso, veja como fazê-lo neste post.
Instalando a KVM (Kernel-based Virtual Machine)
A KVM é uma solução completa de virtualização para Linux que roda em máquinas com processador Intel (x86). Para instalar e rodar a KVM primeiro você precisa checar se sua CPU suporta a virtualização de hardware, o que pode ser feito com o seguinte comando:
1
|
|
Se a resposta desse comando for 0, seu CPU não tem suporte. Se a resposta for 1 ou mais, beleza, mas ainda tem que ver se está habilitado na BIOS. Primeiro instale o pacote cpu-checker:
1
|
|
Em seguida, faça a verificação:
1
|
|
Sua resposta deve ser algo desse tipo:
1 2 3 |
|
Se não, sua resposta será algo como apresentado abaixo e você terá que entrar na BIOS para ativar a Intel Virtualization Technology:
1 2 3 4 |
|
O próximo passo é instalar a KVM e alguns outros pacotes necessários:
1
|
|
Depois, você deve adicionar seu usuário aos grupos kvm e libvirtd:
1 2 |
|
Em seguida, faça logout e login novamente para que as alterações tenham efeito.
Criando um AVD (Android Virtual Device) com o processador Intel
Primeiro, vamos intalar o pacote que dá suporte a escolha da CPU da Intel na
criação do AVD. Abra o SDK Manager com o comando android
e instale o pacote
“Intel x86 Atom System Image” para a versão do Android que pretende usar (Figura
1). No meu caso escolhi a versão 4.2.2 porque o 4.3, que saiu ontem, ainda não
tinha suporte.
Em seguida, vamos criar um AVD normalmente, porém, com o processador da Intel.
Abra o AVD Managet com o comando android avd
. Para facilitar, usei uma
definição de dispositivo da aba “Device Definitions”, no caso, o Nexus 4. Basta
clicar na definição, depois em “Create ADV…”, escolher o target “4.2.2” e o
CPU “Intel Atom (x86)”. Além disso, para facilitar na hora de usar com o
emulador, troquei o nome do ADV para “nexus4” como pode ser visto na Figura 2.
Ponto, agora você tem seu dispositivo virtual com o processador Intel. Agora vamos utilizá-lo no emulador:
1
|
|
Se você quiser ver a diferença entre utilizar o processador Intel e o ARM, feche o emulador, edite seu AVD trocando a CPU dele para AMR e inicie o emulador novamente. A diferença é grande, né? =)
Corrigindo o erro da libGL.so
Inicie seu emulador e veja se acontece erro abaixo:
1 2 3 4 5 |
|
Se sim, para corrigí-lo basta encontrar o arquivo em sua máquina e criar um link simbólico na pasta onde está o Android SDK. Para encontra o arquivo:
1 2 3 4 5 6 |
|
Como meu sistema é 64 bits, vou usar o aquivo /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 para fazer o link:
Obs: mude o ~/android para o local onde está o Android SDK na sua máquina.
1
|
|
Se isso não solucionar seu problema, dê uma olhada nessas respostas do stackoverflow.
Turbinando ainda mais seu emulador
Uma outra coisa que você pode fazer para acelerar ainda mais seu emulador é habilitar o uso da GPU. Basta editar seu AVD e selecionar o item “Use Host GPU”. Isso fará com que o emulador carregue ainda mais rápido (em 8 segundos na minha máquina), as animações de transição sejam mais rápidas e fluidas e os gráficos fiquem mais bonitos e bem definidos. Repare na diferença do papel de parede na Figura 3.
O único problema é que se você, assim como eu, utiliza o PhoneGap para desenvolver seus apps, o uso da GPU fará com que sua aplicação não abra direito, como na Figura 4. Não encontrei nenhuma solução para isso e eu mantive essa opção desmarcada. Se alguém solucionar esse problema, por favor deixe um comentário! =)