Configurar a aceleração de hardware para o Android Emulator

O Android Emulator pode usar recursos de aceleração de hardware para melhorar o desempenho, radicalmente em alguns casos. Esta página descreve como configurar a aceleração de elementos gráficos e da máquina virtual (VM) para ter um desempenho melhor do emulador.

Configurar a aceleração gráfica

A aceleração gráfica usa o hardware do computador (geralmente a GPU) para tornar a renderização da tela mais rápida. Os dispositivos Android usam o OpenGL para sistemas incorporados (OpenGL ES ou GLES) para renderizar imagens 2D e 3D na tela.

Ao criar um Android Virtual Device (AVD) no AVD Manager, você pode especificar se o emulador deve usar hardware ou software para emular a GPU do AVD. A aceleração de hardware é recomendada e, normalmente, é a opção mais rápida. No entanto, talvez seja necessário usar a aceleração de software caso o computador use drivers gráficos incompatíveis com o emulador.

Por padrão, o emulador decide entre a aceleração de hardware ou de software com base na configuração do computador. Se o hardware e os drivers da GPU forem compatíveis, o emulador usará a GPU. Caso contrário, ele usará a aceleração de software (por meio da CPU do computador) para simular o processamento da GPU.

Se você iniciar o emulador a partir da linha de comando, também poderá modificar a configuração de aceleração gráfica no AVD para essa instância de dispositivo virtual.

Requisitos

Para usar aceleração gráfica, seu ambiente de desenvolvimento precisa atender aos seguintes requisitos:

  • Ferramentas do SDK: a última versão é recomendada (versão 17 no mínimo).
  • Plataforma do SDK: a última versão é recomendada (Android 4.0.3, Revisão 3, no mínimo).

Configurar a aceleração gráfica no AVD Manager

Para configurar a aceleração gráfica para um AVD, siga estas etapas:

  1. Abra o AVD Manager.
  2. Crie um novo AVD ou edite um AVD existente.
  3. Na página Verify Configuration, encontre a seção Emulated Performance.
  4. Selecione um valor para a opção Graphics:.
  5. Clique em Finish.

Configurar a aceleração gráfica a partir da linha de comando

Para especificar um tipo de aceleração gráfica ao executar um AVD na linha de comando, inclua a opção -gpu, conforme mostrado no exemplo a seguir:

    emulator -avd avd_name -gpu mode [{-option [value]} ... ]
    

O valor de mode pode ser definido como uma das opções abaixo:

  • auto: permite que o emulador escolha entre a aceleração gráfica de hardware ou de software com base na configuração do computador.
  • host: usa a GPU no computador para a aceleração de hardware. Geralmente, essa opção proporciona a melhor qualidade gráfica e desempenho para o emulador. No entanto, se os drivers gráficos apresentarem problemas durante a renderização com o OpenGL, poderá ser necessário usar as opções swiftshader_indirect ou angle_indirect.
  • swiftshader_indirect: usa uma variante do SwiftShader compatível com o "Quick Boot" para renderizar elementos gráficos por meio da aceleração de software. Essa opção é uma boa alternativa para o modo host quando seu computador não pode usar a aceleração de hardware.
  • angle_indirect: (somente Windows) usa uma variante do ANGLE Direct3D compatível com o "Quick Boot" para renderizar elementos gráficos por meio da aceleração de software. Essa opção é uma boa alternativa para o modo host quando seu computador não pode usar a aceleração de hardware. Na maioria dos casos, o desempenho do ANGLE deve ser semelhante ao uso do modo host, uma vez que o ANGLE usa o Microsoft DirectX em vez do OpenGL. No Windows, os drivers do Microsoft DirectX geralmente apresentam menos problemas que os drivers do OpenGL. Essa opção usa o Direct3D 11 e requer o Windows 10, Windows 8.1 ou Windows 7 SP1 com a Atualização de plataforma do Windows 7.
  • guest: usa a renderização de software no convidado. Essa opção oferece a menor qualidade gráfica e desempenho para o emulador.

As seguintes opções de mode estão obsoletas:

  • swiftshader: uso suspenso na versão 27.0.2. Use swiftshader_indirect.
  • angle: uso suspenso na versão 27.0.2. Use angle_indirect (somente Windows).
  • mesa: uso suspenso na versão 25.3. Use swiftshader_indirect.

Ativar renderização com o Skia para a IU Android

Ao usar imagens para API nível 27 ou posterior, o emulador pode renderizar a IU Android com o Skia. O Skia ajuda o emulador a renderizar elementos gráficos com mais facilidade e eficiência.

Para ativar a renderização com o Skia, use os seguintes comandos no shell do adb:

su
    setprop debug.hwui.renderer skiagl
    stop
    start
    

Configurar a aceleração de VM

A aceleração de VM usa o processador do computador para melhorar significativamente a velocidade de execução do emulador. Uma ferramenta denominada hipervisor gerencia essa interação usando extensões de virtualização oferecidas pelo processador do computador. Esta seção descreve os requisitos para o uso da aceleração de VM e também explica como configurá-la em cada sistema operacional.

Requisitos gerais

Para usar a aceleração de VM com o emulador, seu computador precisa atender aos requisitos gerais desta seção. O computador também precisa atender a outros requisitos específicos do sistema operacional.

Requisitos do ambiente de desenvolvimento

Para usar a aceleração de VM, seu ambiente de desenvolvimento precisa atender aos seguintes requisitos:

  • Ferramentas do SDK: versão 17 no mínimo. A versão recomendada é 26.1.1 ou posterior.
  • AVD com uma imagem de sistema baseada em x86, disponível para Android 2.3.3 (API nível 10) e posterior.

Requisitos de extensão de virtualização

Além dos requisitos do ambiente de desenvolvimento, o processador do computador precisa ser compatível com uma das seguintes tecnologias de extensões de virtualização:

  • Extensões da Tecnologia de virtualização Intel (VT, VT-x, vmx)
  • Extensões da AMD Virtualization (AMD-V, SVM)

A maioria dos processadores modernos é compatível com essas extensões de virtualização. Se você não sabe se o processador é compatível com essas extensões, verifique as especificações do processador no site do fabricante. Se o processador não for compatível com uma dessas extensões, não será possível usar a aceleração de VM.

Restrições

A aceleração de VM tem as seguintes restrições:

  • Não é possível executar um emulador acelerado por VM dentro de outra VM, como uma VM hospedada pelo VirtualBox, VMWare ou Docker. Execute um emulador acelerado por VM diretamente no computador host.
  • Dependendo do sistema operacional e do hipervisor, não é possível executar um software que use outra tecnologia de virtualização ao mesmo tempo em que você executa um emulador acelerado por VM. Por exemplo, VirtualBox, VMWare e Docker usam outra tecnologia de virtualização atualmente. Sendo assim, não é possível executá-los simultaneamente com o emulador acelerado.

Sobre hipervisores

A aceleração de VM requer um hipervisor.

Sem um hipervisor, o emulador precisa traduzir o código de máquina da VM bloco por bloco, para adequar-se à arquitetura do computador host. Esse processo pode ser bastante lento. Com um hipervisor, a VM e a arquitetura do computador host correspondem. Assim, o emulador pode executar o código diretamente no processador host usando o hipervisor. Essa melhoria aumenta significativamente a velocidade e o desempenho do emulador.

O hipervisor mais indicado para você depende do sistema operacional e da configuração do seu computador. Para ver mais informações, consulte uma das seções a seguir:

Verificar se há um hipervisor instalado

Use a opção de linha de comando -accel-check do emulador para verificar se há um hipervisor instalado no computador.

Os exemplos a seguir mostram como usar a opção accel-check do emulador. Em cada exemplo, sdk é o local do SDK do Android:

Windows:

    c:\Users\janedoe\AppData\Local\Android> sdk\emulator\emulator -accel-check
    accel:
    0
    HAXM version 7.3.2 (4) is installed and usable.
    accel
    

MacOS:

    janedoe:~/Android$ ./sdk/emulator/emulator -accel-check
    accel:
    0
    HAXM version 7.3.2 (4) is installed and usable.
    accel
    

Linux:

    janedoe-macbookpro:Android janedoe$ ./sdk/emulator/emulator -accel-check
    accel:
    0
    KVM (version 12) is installed and usable.
    

Configurar a aceleração de VM no Windows

A aceleração de VM no Windows pode usar um de dois hipervisores: o Hardware Accelerated Execution Manager (HAXM) da Intel ou a Plataforma de Hipervisor do Windows (WHPX).

Escolher um hipervisor no Windows

Use os critérios a seguir para determinar qual hipervisor deve ser usado:

Critérios Hipervisor
Você tem um processador Intel e não precisa executar o Hyper-V simultaneamente com o Android Emulator. Use o Intel HAXM.
Você tem um processador Intel e precisa executar o Hyper-V simultaneamente com o Android Emulator. Use o WHPX.
Você tem um processador AMD. Use o WHPX.

Configurar a aceleração de VM usando o Intel HAXM no Windows

Antes de instalar e usar o Intel HAXM, seu computador precisa atender aos seguintes requisitos:

  • Processador Intel com Tecnologia de virtualização (VT-x), recursos Intel EM64T (Intel 64) e a funcionalidade Bit de desativação de execução (Bit XD) ativada.
  • Windows 10, Windows 8 ou Windows 7 de 64 bits (ou versão de 32 bits do sistema operacional em um processador de 64 bits).
  • Para usar o Intel HAXM no Windows 10 ou 8, desative o Hyper-V no Painel de Controle do Windows. Observação: a instalação de determinados softwares pode ativar o Hyper-V novamente. Sempre que possível, o Android Studio tenta detectar se o Hyper-V foi reativado e exibe uma opção que permite desativar o Hyper-V novamente.

Para instalar o driver do Intel HAXM, siga estas etapas:

  1. Abra o SDK Manager.
  2. Clique na guia SDK Update Sites e selecione Intel HAXM.
  3. Clique em OK.
  4. Quando o download terminar, execute o instalador. Normalmente, você encontra o instalador no seguinte local: sdk\extras\intel\Hardware_Accelerated_Execution_Manager\intelhaxm-android.exe
  5. Use o assistente para concluir a instalação.
  6. Depois de instalar o Intel HAXM, verifique se o driver de virtualização está funcionando corretamente digitando o seguinte em uma janela do prompt de comando:

    sc query intelhaxm
        

    Você deve ver uma mensagem de status que inclui as seguintes informações:

    SERVICE_NAME: intelhaxm
               ...
               STATE              : 4  RUNNING
               ...
        

Para ver mais informações, consulte Instruções de instalação do Intel HAXM no Windows (link em inglês).

É possível ajustar a quantidade de memória disponível para a extensão do kernel do Intel HAXM executando o instalador novamente.

Para desinstalar o Intel HAXM, use o instalador ou o Painel de Controle do Windows. Antes de desinstalar o Intel HAXM, desligue todos os emuladores x86 que estiverem em execução no momento.

Configurar a aceleração de VM usando a Plataforma de Hipervisor do Windows

Antes de ativar o WHPX, seu computador precisa atender aos seguintes requisitos:

  • Processadores Intel: compatibilidade com os recursos de Tecnologia de virtualização (VT-x), Tabelas de páginas estendidas (EPT, na sigla em inglês) e Unrestricted Guest (UG). A VT-x precisa estar ativada nas configurações do BIOS de computador.
  • Processadores AMD: o processador AMD Ryzen é recomendado. A virtualização ou o SVM precisa estar ativado nas configurações do BIOS do computador.
  • Android Studio 3.2 Beta 1 ou posterior (download em developer.android.com).
  • Android Emulator versão 27.3.8 ou posterior (download por meio do SDK Manager).
  • Windows 10 com atualização de abril de 2018 ou posterior.

Para instalar o WHPX no Windows, siga estas etapas:

  1. Na área de trabalho do Windows, clique com o botão direito no ícone do Windows e selecione Apps and features.
  2. Em Related settings, clique em Programs and Features.
  3. Clique em Turns Windows Features on or off.
  4. Selecione Windows Hypervisor Platform.

  5. Clique em OK.

  6. Quando a instalação terminar, reinicie o computador.

Configurar a aceleração de VM no macOS

No Mac OS X v10.10 Yosemite e posterior, o Android Emulator usa o Hypervisor.Framework integrado por padrão e volta a usar o Intel HAXM, caso o Hypervisor.Framework apresente falha ao ser inicializado.

Para usar a aceleração de VM no macOS quando o Hypervisor.Framework não está disponível, instale a extensão do kernel do Intel HAXM.

Para instalar a extensão do kernel do Intel HAXM, siga estas etapas:

  1. Abra o SDK Manager.
  2. Clique na guia SDK Update Sites e selecione Intel HAXM.
  3. Clique em OK.
  4. Quando o download terminar, execute o instalador. Normalmente, você encontra o instalador no seguinte local: sdk/extras/intel/Hardware_Accelerated_ExecutionManager/IntelHAXMversion.dmg
  5. Siga as instruções na tela para concluir a instalação.
  6. Quando a instalação terminar, verifique se a nova extensão do kernel está funcionando corretamente abrindo uma janela de terminal e executando o seguinte comando:

        kextstat | grep intel
        

    Você deve ver uma mensagem de status contendo o seguinte nome de extensão, indicando que a extensão do kernel foi carregada:

    com.intel.kext.intelhaxm
        

Para ver mais informações, consulte Instruções de instalação do Intel HAXM (link em inglês).

É possível ajustar a quantidade de memória disponível para a extensão do kernel do Intel HAXM executando o instalador novamente.

Para não usar mais a extensão do kernel do Intel HAXM, desinstale-a. Antes da desinstalação, desligue todos os emuladores x86 que estiverem em execução no momento. Em seguida, execute o seguinte comando em uma janela de terminal:

    sudo /System/Library/Extensions/intelhaxm.kext/Contents/Resources/uninstall.sh
    

Configurar a aceleração de VM no Linux

Sistemas Linux são compatíveis com a aceleração de VMs por meio do pacote de software KVM (link em inglês). Siga as instruções para instalar o KVM no sistema Linux e verifique se o KVM está ativado. Para sistemas Ubuntu, consulte Instalação do KVM no Ubuntu (link em inglês).

Requisitos

A execução do KVM requer permissões de usuário específicas. Verifique se você tem permissões suficientes conforme especificado nas instruções de instalação do KVM.

Para usar a aceleração de VM no Linux, o computador também precisa atender a estes requisitos:

  • Para processadores Intel: compatibilidade com a Tecnologia de virtualização (VT-x), recursos Intel EM64T (Intel 64) e a funcionalidade Bit de desativação de execução (Bit XD) ativada.
  • Para processadores AMD: compatibilidade com AMD Virtualization (AMD-V).

Verificar se o KVM está instalado no Linux

Você pode usar a opção de linha de comando -accel-check do emulador para verificar se o KVM está instalado. Também é possível instalar o pacote cpu-checker que contém o comando kvm-ok.

O exemplo a seguir mostra como usar o comando kvm-ok:

$ sudo apt-get install cpu-checker
    $ egrep -c '(vmx|svm)' /proc/cpuinfo
    12
    $ kvm-ok
    INFO: /dev/kvm exists
    KVM acceleration can be used
    

Instalar o KVM no Linux

Use o seguinte comando para instalar o KVM:

    sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils ia32-libs-multiarch