Skip to content

Most visited

Recently visited

navigation

Compilar e executar seu aplicativo

Por padrão, o Android Studio configura novos projetos a serem implantados no emulador ou em um dispositivo físico com apenas alguns cliques. Com o Instant Run, você pode implementar alterações em métodos e recursos existentes de um aplicativo em execução sem compilar um novo APK. Dessa forma, as alterações no código podem ser visualizadas quase instantaneamente.

Para compilar e executar seu aplicativo, clique em Run . O Android Studio compila seu aplicativo com o Gradle, solicita que você selecione um destino de implantação (um emulador ou dispositivo conectado) e implanta seu aplicativo nele. Você pode personalizar alguns desses comportamento padrão, como selecionar um destino de implantação automático, ao alterar a configuração de execução.

Se quiser usar o Android Emulator para executar seu aplicativo, será preciso ter um Android Virtual Device (AVD) pronto. Se ainda não criou um, após clicar em Run, clique em Create New Emulator na caixa de diálogo Select Deployment Target. Siga o assistente Virtual Device Configuration para definir o tipo de dispositivo que deseja emular. Para saber mais, consulte Criar e gerenciar dispositivos virtuais.

Se estiver usando um dispositivo Android físico, será preciso ativar a depuração de USB no dispositivo. Para saber mais, consulte Executar aplicativos em um dispositivo de hardware.

Observação: também é possível implantar seu aplicativo no modo de depuração clicando em Debug . Executar o aplicativo no modo de depuração permite que você defina pontos de interrupção no código, examine variáveis e avalie expressões no tempo de execução, além de executar ferramentas de depuração. Para saber mais, consulte Depurar seu aplicativo.

Selecionar e compilar um módulo diferente

Se seu projeto tiver vários modos além do módulo padrão, você poderá compilar um módulo específico da seguinte maneira:

O Android Studio compila o módulo usando o Gradle. Após a compilação do módulo, você poderá executá-lo e depurá-lo se tiver compilado o módulo para um novo aplicativo ou dispositivo, ou usá-lo como uma dependência se tiver compilado uma biblioteca ou um módulo do Google Cloud.

Para executar um módulo de aplicativo compilado:

Alterar a configuração de execução/depuração

A configuração de execução/depuração especifica o módulo a ser executado, o pacote a ser implantado, a atividade a ser iniciada, o dispositivo de destino, as configurações do emulador, as opções de logcat e muito mais. A configuração de execução/depuração padrão inicia a atividade de projeto padrão e usa a caixa de diálogo Select Deployment Target para selecionar o dispositivo de destino. Se as configurações padrão não são adequadas ao seu projeto ou módulo, você pode personalizar as configurações de execução/depuração ou mesmo criar novas configurações nos níveis de projeto, padrão e módulo. Para editar uma configuração de execução/depuração, selecione Run > Edit Configurations. Para saber mais, consulte Criar e editar configurações de execução/depuração.

Alterar a variante de compilação

Por padrão, o Android Studio compila a versão de depuração do seu aplicativo, que se destina apenas a testes, quando você clica em Run. Você deve compilar a versão de lançamento para preparar seu aplicativo para lançamento ao público.

Para alterar a variante de compilação usada pelo Android Studio, acesse Build > Select Build Variant e selecione uma opção diferente no menu suspenso. Por padrão, novos projetos são configurados com uma variante de depuração e lançamento.

Ao usar os tipos de produto, você pode criar variantes de compilação adicionais para diferentes versões do seu aplicativo, cada uma com diferentes recursos ou requisitos de dispositivo. Para saber mais sobre as variantes de compilação e os tipos de produto, consulte Configurar sua compilação.

Monitorar o processo de compilação

Você pode visualizar detalhes sobre o processo de compilação clicando em Gradle Console . O console exibe cada tarefa executada pelo Gradle para compilar seu aplicativo, conforme mostrado na figura 1.

Figura 1. O Gradle Console no Android Studio.

Se suas variantes de compilação usam tipos de produto, o Gradle também chama tarefas para compilar esses tipos de produto. Para visualizar a lista de todas as tarefas de compilação disponíveis, clique em Gradle à direita da janela IDE.

Caso ocorra um erro durante o processo de compilação, a janela Messages será exibida para descrever o problema. O Gradle pode recomendar algumas opções de linha de comando para ajudar a resolver o problema, como --stacktrace ou --debug. Para usar opções de linha de comando com seu processo de compilação:

  1. Abra a caixa de diálogo Settings ou Preferences:
    • No Windows ou Linux, selecione File > Settings no menu principal.
    • No Mac OSX, selecione Android Studio > Preferences no menu principal.
  2. Navegue até Build, Execution, Deployment > Compiler.
  3. No campo de texto ao lado de Command-line Options, insira suas opções de linha de comando.
  4. Clique em OK para salvar e sair.

O Gradle aplicará essas opções de linha de comando na próxima vez que você tentar compilar seu aplicativo.

Gerar APKs

Ao clicar em Run, o Android Studio gera um APK de depuração e implanta-o no dispositivo de destino. Antes de gerar uma versão de lançamento do seu aplicativo para distribuição ao público, entretanto, você deve primeiro saber como assinar seu aplicativo. Em seguida, você pode gerar vários APKs assinados das suas variantes de compilação de depuração ou lançamento. Para localizar os arquivos de APK, clique no link fornecido na caixa de diálogo pop-up, conforme mostrado na figura 2.

Figura 2. Clique no link para localizar os arquivos de APK gerados.

Sobre o Instant Run

Introduzido no Android Studio 2.0, o Instant Run é um comportamento dos comandos Run e Debug que reduz significativamente o tempo entre atualizações do seu aplicativo. Mesmo que sua primeira compilação demore mais para ser concluída, o Instant Run envia atualizações subsequentes ao seu aplicativo sem compilar um novo APK. Assim, as alterações se tornam visíveis com muito mais rapidez.

O Instant Run tem suporte somente ao implantar a variante de compilação de depuração, ao usar o Android Plugin para Gradle versão 2.0.0 ou posterior e ao definir minSdkVersion como 15 ou mais no arquivo build.gradle de nível de módulo do seu aplicativo. Para obter o melhor desempenho, defina minSdkVersion para 21 ou mais.

Após implantar um aplicativo, um pequeno ícone de raio amarelo será exibido no botão Run (ou no botão Debug ), indicando que o Instant Run está pronto para enviar atualizações na próxima vez que você clicar no botão. Em vez de compilar um novo APK, ele envia apenas essas novas alterações e, em alguns casos, o aplicativo sequer precisa ser reiniciado e imediatamente mostra o efeito das alterações de código.

O Instant Run envia o código e os recursos atualizados para o dispositivo conectado ou emulador ao executar um hot swap, warm swap ou cold swap. Ele automaticamente determina o tipo de swap a ter executado com base no tipo de alteração realizada. O vídeo acima fornece detalhes interessantes sobre como isso funciona internamente. Para obter um resumo rápido de como o Instant Run se comporta quando você envia determinadas alterações de código para um dispositivo de destino, consulte a tabela a seguir.

Alteração de código Comportamento do Instant Run
  • Alteração do código de implementação de um método existente

Permitido com hot swap: Esse é o tipo de swap mais rápido e torna as alterações visíveis com muito mais rapidez. O aplicativo continua em execução e um método stub com a nova implementação é usado na próxima vez em que for chamado.

Hot swaps não reinicializam objetos no aplicativo em execução. Pode ser preciso reiniciar a atividade atual ou reiniciar o aplicativo antes de poder visualizar certas atualizações. Por padrão, o Android Studio automaticamente reinicia a atividade atual após realizar um hot swap. Se não quiser esse comportamento, você poderá desativar as reinicializações automáticas de atividades.

  • Alteração ou remoção de um recurso existente
Permitido com warm swap: Esse swap ainda é muito rápido, mas o Instant Run precisa reiniciar a atividade atual ao enviar os recursos alterados para o aplicativo. O aplicativo continua em execução, mas a tela pode apresentar uma breve oscilação conforme a atividade é reiniciada, o que é normal.
Alterações no código estrutural, como:
  • Adição, remoção ou alteração de:
    • uma anotação
    • um campo de instância
    • um campo estático
    • uma assinatura de método estático
    • uma assinatura de método de instância
  • Alteração de qual classe pai a classe atual herda
  • Alteração da lista de interfaces implementadas
  • Alteração do inicializador estático da classe
  • Reordenação de elementos de layout que usam IDs de recurso dinâmicos

Permitido com cold swap (nível de API 21 ou superior): Esse swap é mais lento pois, apesar de não exigir um novo APK, o Instant Run precisa reiniciar todo o aplicativo ao enviar alterações de código estrutural.

Para dispositivos de destino que executem o nível de API 20 ou inferior, o Android Studio implanta um APK completo.

  • Alteração no manifesto do aplicativo
  • Alteração de recursos referenciados pelo manifesto do aplicativo
  • Alteração de um elemento de interface do widget do Android (exige limpeza e nova execução)

Ao fazer alterações no manifesto do aplicativo ou nos recursos referenciados pelo manifesto, o Android Studio automaticamente implanta uma nova compilação para aplicar essas alterações. Isso ocorre porque determinadas informações sobre o aplicativo, como seu nome, os recursos de ícone do aplicativo e os filtros de intenção, são determinadas pelo manifesto quando o APK é instalado no dispositivo.

Se o processo de compilação automaticamente atualizar qualquer parte do manifesto do aplicativo, como iterar automaticamente o versionCode ou versionName, você poderá se beneficiar de todo o desempenho do Instant Run. Ao usar o Instant Run, você deve desativar as atualizações automáticas para qualquer parte do manifesto do aplicativo nas variantes de compilação de depuração.

Ao atualizar um elemento de interface do widget do Android, você deve limpar e executar novamente para ver as alterações. Como a execução de compilações de limpeza pode demorar mais ao usar o Instant Run, você pode desativar o Instant Run temporariamente ao fazer atualizações na interface do widget.

Observação: se precisar reiniciar o aplicativo após uma falha, não o inicie do dispositivo de destino. Reiniciar o aplicativo pelo dispositivo de destino não aplica suas alterações de código desde o último cold swap ou compilação incremental. Para iniciar o aplicativo com todas as alterações recentes, clique em Run (ou Debug ) no Android Studio.

Usar a re-execução

Ao enviar alterações de código que afetam certos inicializadores, como alterações em um método onCreate() de um aplicativo, você deve reiniciar o aplicativo para que as alterações tenham efeito. Para executar uma compilação incremental e reiniciar o aplicativo, clique em Rerun .

Se precisar implantar uma compilação de limpeza, selecione Run > Clean and Rerun no menu principal ou mantenha a tecla Shift pressionada enquanto clica em Rerun . Essa ação interrompe o aplicativo em execução, executa uma compilação de limpeza completa e implanta o novo APK no dispositivo de destino.

Desativar a reinicialização automática de atividades

Ao executar um hot swap, seu aplicativo continua em execução, mas o Android Studio automaticamente reinicia a atividade atual. Para desativar essa configuração padrão:

  1. Abra a caixa de diálogo Settings ou Preferences:
    • No Windows ou Linux, selecione File > Settings no menu principal.
    • No Mac OSX, selecione Android Studio > Preferences no menu principal.
  2. Navegue até Build, Execution, Deployment > Instant Run.
  3. Desmarque a caixa ao lado de Restart activity on code changes.

Se a reinicialização automática de atividades estiver desativada, você poderá reiniciar a atividade atual manualmente pela barra de menu selecionando Run > Restart Activity.

Configurar e otimizar seu projeto para o Instant Run

O Android Studio ativa o Instant Run por padrão para projetos compilados usando o Android Plugin para Gradle 2.0.0 e posteriores.

Para atualizar um projeto existente com a versão mais recente do plug-in:

  1. Abra a caixa de diálogo Settings ou Preferences.
  2. Navegue até Build, Execution, Deployment > Instant Run e clique em Update Project, conforme mostrado na figura 3.

    Se a opção de atualizar o projeto não for exibida, ele já está atualizado com a versão mais recente do Android Plugin para Gradle.

    Figura 3. Atualização do Android Plugin para Gradle para um projeto existente.

Também é preciso alterar a variante de compilação para uma versão de depuração do seu aplicativo para começar a usar o Instant Run.

Melhorar os tempos de compilação ao configurar recursos de DEX

Ao implantar uma compilação de limpeza, o Android Studio instrumenta seu aplicativo para permitir que o Instant Run envie atualizações de códigos e recursos. Apesar de a atualização do aplicativo em execução ocorrer com mais rapidez, a primeira compilação pode demorar mais para ser concluída. Você pode melhorar o processo de compilação definindo algumas configurações DexOptions:

maxProcessCount
Define o número máximo de processos de DEX que podem ser iniciados simultaneamente. Se o daemon do Gradle já estiver em execução, você deverá interromper o processo antes de inicializá-lo com uma nova contagem máxima de processos. Você pode encerrar o daemon do Gradle chamando uma das opções a seguir na janela Terminal:
  • No Windows, chame gradlew --stop
  • No Linux/Mac OSX, chame ./gradlew --stop
javaMaxHeapSize
Define o tamanho máximo do pool de alocação de memória para a operação de dex. Ao passar um valor, você pode anexar a letra 'k' para indicar kilobytes, 'm' para indicar megabytes ou 'g' para indicar gigabytes.

O exemplo a seguir define maxProcessCount para 4 e javaMaxHeapSize para "2g" no arquivo build.gradle de nível de módulo:

android {
  ...
  dexOptions {
    maxProcessCount 4 // this is the default value
    javaMaxHeapSize "2g"
  }
}

Faça experiências com essas configurações aumentando seus valores e observando o efeito nos tempos de compilação. Poderá ocorrer um impacto negativo no desempenho se você alocar muitos recursos para o processo de dexing.

Ativar o dexing no processo e a compilação de Java incremental

O Android Plugin para Gradle versão 2.1.0 e posteriores incluem melhorias adicionais para o processo de compilação, incluindo a compilação de Java incremental e dexing no processo. A compilação de Java incremental é ativada por padrão e reduz o tempo de compilação durante o desenvolvimento ao recompilar partes da fonte que foram alteradas ou precisam ser recompiladas.

O dexing no processo executa o dexing dentro do processo de compilação em vez de em um processo de VM externo separado. Isso não só torna as compilações incrementais mais rápidas, mas também agiliza significativamente as compilações completas. Para ativar esse recurso, você precisa definir o tamanho de pilha máximo do daemon do Gradle para pelo menos 2048 MB. Isso pode ser feito incluindo o seguinte no arquivo gradle.properties do projeto:

org.gradle.jvmargs = -Xmx2048m

Se definiu um valor para javaMaxHeapSize no seu arquivo build.gradle de nível de módulo, você precisa definir o tamanho de pilha máximo do daemon para o valor de javaMaxHeapSize + 1024 MB. Por exemplo, se você definiu javaMaxHeapSize para "2g”, deve adicionar o seguinte ao arquivo gradle.properties do seu projeto:

org.gradle.jvmargs = -Xmx3072m

Excluir seu projeto do Windows Defender

Em sistemas Windows, o Windows Defender pode causar lentidão durante o uso do Instant Run. Se estiver usando o Windows Defender, você deverá excluir a pasta do seu projeto Android Studio das verificações de malware do Windows Defender.

Melhorar os tempos de compilação ao usar o Crashlytics

Se sua versão do plug-in Fabric Gradle for inferior à 1.21.6, o Crashlytics poderá aumentar os tempos de compilação. Para melhorar o desempenho de compilação ao desenvolver seu aplicativo, você pode atualizar o plug-in para a versão mais recente ou desativar o Crashlytics para sua variante de compilação de depuração.

Limitações do Instant Run

O Instant Run foi projetado para agilizar o processo de compilação e implantação na maioria das situações. No entanto, alguns aspectos do Instant Run podem afetar seu comportamento e a compatibilidade com o aplicativo. Se tiver algum problema ao usar o Instant Run, registre um erro.

Implantar em vários dispositivos

O Instant Run usa diferentes técnicas para executar hot, warm e cold swaps específicos ao nível de API do dispositivo de destino. Por esse motivo, ao implantar um aplicativo em vários dispositivos de uma vez, o Android Studio desativa o Instant Run temporariamente.

Multidexar seu aplicativo

Se seu projeto for configurado para Legacy Multidex, ou seja, quando o build.gradle for configurado com multiDexEnabled true e minSdkVersion 20 ou inferior, e você implantar em dispositivos que executem o Android 4.4 (nível de API 20) ou inferior, o Android Studio desativará o Instant Run.

Se minSdkVersion for definido para 21 ou mais, o Instant Run automaticamente configurará seu aplicativo para multidexar. Como o Instant Run só funciona com a versão de depuração do seu aplicativo, pode ser preciso configurar seu aplicativo para multidexar ao implantar sua variante de compilação de lançamento.

Executar testes instrumentados e geradores de perfis de desempenho

Testes instrumentados carregam o APK de depuração e um APK de teste no mesmo processo em um dispositivo de teste, permitindo que métodos de controle substituam o ciclo de vida normal do aplicativo e executem testes. Ao executar ou depurar testes instrumentados, o Android Studio não injeta métodos adicionais necessários para o Instant Run e desativa o recurso.

Ao criar um perfil de aplicativo, você deve desativar o Instant Run. Ocorre um pequeno impacto no desempenho ao usar o Instant Run e um impacto ligeiramente maior ao substituir métodos com um hot swap. Esse impacto no desempenho pode interferir nas informações fornecidas pelas ferramentas de geração de perfis de desempenho. Além disso, os métodos de stub gerados com cada hot swap podem complicar rastreamentos de pilha.

Usar plug-ins de terceiros

O Android Studio temporariamente desativa a Java Code Coverage Library (JaCoCo) e o ProGuard ao usar o Instant Run. Como o Instant Run só funciona com compilações de depuração, isso não afeta sua compilação de lançamento.

Alguns plug-ins de terceiros que realizam melhorias de bytecode podem causar problemas na instrumentação do Instant Run para seu aplicativo. Se tiver esses problemas, mas quiser continuar usando o Instant Run, desative esses plug-ins para sua variante de compilação de depuração. Também é possível melhorar a compatibilidade com plug-ins de terceiros registrando um erro.

Enviar alterações para aplicativos de vários processos

O Instant Run só instrumenta o processo principal do seu aplicativo para executar hot swaps e warm swaps. Ao enviar alterações de código para outros processos do aplicativo, como alterações em uma implementação de método ou um recurso existente, o Instant Run executa um cold swap.

Desativar o Instant Run

Para desativar o Instant Run:

  1. Abra a caixa de diálogo Settings ou Preferences.
  2. Navegue até Build, Execution, Deployment > Instant Run.
  3. Desmarque a caixa ao lado de Enable Instant Run.
This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)