Android Studio 3.1 (março de 2018)

O Android Studio 3.1.0 é uma versão principal que inclui vários novos recursos e melhorias.

3.1.4 (agosto de 2018)

Esta atualização para o Android Studio 3.1 inclui as seguintes alterações e correções:

  • O pacote Kotlin agora é a versão 1.2.50.
  • Novos projetos são criados com kotlin-stdlib-jdk* artifacts em vez de artefatos kotlin-stdlib-jre*, que foram descontinuados.
  • A análise R8 das regras do ProGuard foi aprimorada.
  • Os seguintes bugs foram corrigidos:
    • Falha na tentativa de executar a classe Kotlin Main com um erro: "Error: Could not find or load main class..."
    • O R8 entrava em um loop infinito ao executar determinadas otimizações.
    • O uso do comando Rerun failed tests na janela Run às vezes retornava incorretamente a mensagem "No tests were found".
    • O D8 não processava corretamente instâncias de invoke-virtual, o que causava uma falha com um VerifyError: invoke-super/virtual can't be used on private method
    • O compilador Data Binding dependia de uma versão antiga de com.android.tools:annotations. O compilador agora usa anotações de ferramentas do projeto base quando disponíveis.
    • O Android Studio travava durante transições de fragmento ao usar criadores de perfil.
    • O depurador travava ao depurar um layout com uma caixa de texto.
    • O D8 falhava ao ler alguns arquivos ZIP com caracteres especiais.

3.1.3 (junho de 2018)

Esta atualização para o Android Studio 3.1 inclui correções para os seguintes bugs:

  • Os vazamentos de memória faziam com que o Android Studio se tornasse lento e não respondesse depois de o Layout Editor ter sido usado. Esta atualização inclui correções para a maioria desses problemas. Pretendemos lançar outra atualização em breve para corrigir outros vazamentos de memória.
  • Alguns apps criados com o D8 travavam em alguns tablets da Verizon Ellipsis.
  • Falha na instalação de apps criados com o D8 com um erro INSTALL_FAILED_DEXOPT em dispositivos com Android 5.0 ou 5.1 (API de nível 21 ou 22).
  • Alguns apps que usavam a biblioteca OkHttp e eram criados com o D8 travavam em dispositivos com o Android 4.4 (API de nível 19).
  • Às vezes, o Android Studio falhava ao iniciar com uma ProcessCanceledException durante a inicialização da classe para com.intellij.psi.jsp.JspElementType.

3.1.2 (abril de 2018)

Esta atualização para o Android Studio 3.1 inclui correções para os seguintes bugs:

  • Em alguns casos, o Android Studio ficava inativo indefinidamente durante a saída.
  • Builds configurados com conjuntos de origem falhavam com a seguinte mensagem quando o Instant Run era ativado:

    "The SourceSet name is not recognized by the Android Gradle Plugin."

  • Quando o Instant Run era ativado, as compilações de novos projetos do Kotlin falhavam quando acionadas pelo comando Run.
  • Durante a edição do arquivo build.gradle, às vezes havia um atraso perceptível entre a digitação de um caractere e a exibição dele na tela.
  • Ocorriam falhas de compilação durante a dexação em alguns projetos com um grande número de módulos ou dependências externas, com a seguinte mensagem de erro:

    "RejectedExecutionException: Thread limit exceeded replacing blocked worker"

  • A computação da lista DEX principal do D8 não incluía algumas invocações reflexivas.

Esta atualização também inclui alterações que tornam as verificações de lint em execução do Gradle muito mais rápidas em alguns cenários.

3.1.1 (abril de 2018)

Esta atualização para o Android Studio 3.1 inclui correções para os seguintes bugs:

  • Em alguns casos, quando um projeto criado no Android Studio 3.0 era aberto pela primeira vez no Android Studio 3.1, a tarefa Gradle-aware Make era removida da área Before launch em Run/Debug Configurations. Como resultado, os projetos não eram criados quando o botão Run ou Debug era clicado, o que, por sua vez, causava falhas, como a implantação de APKs incorretos e travamentos ao usar o Instant Run.

    Para resolver esse problema, o Android Studio 3.1.1 adiciona a tarefa Gradle-aware Make à configuração de execução dos projetos que estão sem essa entrada. Essa modificação ocorre após a primeira sincronização do Gradle quando o projeto é carregado.

  • O depurador travava ao depurar um layout com uma caixa de texto se a criação de perfil avançada estivesse ativada.
  • O Android Studio congelava depois do clique em Build Variants.
  • Os arquivos AAR (arquivos Android) eram extraídos duas vezes. Uma vez durante o processo de sincronização do Gradle e uma vez durante o processo de compilação do Gradle.
  • Faltavam elementos em alguns drawables vetoriais importados de arquivos SVG.
  • O aviso sobre a descontinuação da configuração de dependência compile foi atualizado com uma orientação melhor sobre as configurações de implementation e api. Para ver detalhes sobre como migrar do uso da configuração de compile, consulte a documentação das novas configurações de dependência.

Programação/IDE

IntelliJ 2017.3.3

O ambiente de desenvolvimento integrado principal do Android Studio foi atualizado com melhorias da versão 2017.3.3 do IntelliJ IDEA. As melhorias incluem uma análise de fluxo de controle aprimorada para coleções e strings, inferência aprimorada de valores nulos, novas correções rápidas e muito mais.

Para detalhes, consulte as notas da versão do JetBrains para IntelliJ IDEA versões 2017.2 e 2017.3, bem como as notas da versão do JetBrains para atualizações de correções de bugs.

Melhorias na edição do SQL com Room

Ao usar a biblioteca de banco de dados do Room, você pode aproveitar várias melhorias para a edição do SQL:

  • O preenchimento de código em uma Query compreende tabelas SQL (entidades), colunas, parâmetros de consulta, aliases, mesclas, subconsultas e cláusulas WITH.
  • O destaque da sintaxe SQL agora funciona.
  • Você pode clicar com o botão direito do mouse em um nome de tabela no SQL e renomeá-lo, o que também reprograma o código Java ou Kotlin correspondente (incluindo, por exemplo, o tipo de retorno da consulta). A renomeação também funciona em outra direção. Portanto, renomear uma classe ou um campo Java reprograma o código SQL correspondente.
  • Os usos de SQL são mostrados ao usar Find usages. Clique com o botão direito do mouse e selecione Find usages no menu de contexto.
  • Para navegar até a declaração de uma entidade SQL no código Java ou Kotlin, você pode manter a tecla Ctrl (Command no Mac) pressionada enquanto clica na entidade.

Para saber mais sobre como usar o SQL com Room, consulte Salvar dados em um banco de dados local usando Room.

Atualizações na vinculação de dados

Esta atualização inclui várias melhorias na vinculação de dados:

  • Agora você pode usar um objeto LiveData como um campo observável em expressões de vinculação de dados. A classe ViewDataBinding agora inclui um novo método setLifecycle() que é usado para observar objetos LiveData.

  • A classe ObservableField agora pode aceitar outros objetos Observable no respectivo construtor.

  • Você pode visualizar um novo compilador incremental para suas classes de vinculação de dados. Para saber mais detalhes sobre esse novo compilador e instruções para ativá-lo, consulte Data Binding Compiler V2.

    Veja os benefícios do novo compilador:

    • As classes ViewBinding são geradas pelo plug-in do Android para Gradle antes do compilador Java.
    • As bibliotecas mantêm as respectivas classes de vinculação geradas quando o app é compilado, em vez de serem geradas novamente a cada vez. Isso pode melhorar muito o desempenho de projetos com vários módulos.

Compilador e Gradle

D8 é o compilador DEX padrão

O compilador D8 agora é usado por padrão para gerar bytecode DEX.

Esse novo compilador DEX traz vários benefícios, incluindo os seguintes:

  • Dexação mais rápida
  • Menor uso de memória
  • A geração de código foi melhorada (melhor alocação de registro, tabelas de string mais inteligentes)
  • Melhor experiência de depuração ao percorrer o código

Você não precisa fazer nenhuma mudança no código ou no fluxo de trabalho de desenvolvimento para ter esses benefícios, a menos que tenha desativado o compilador D8 de forma manual anteriormente.

Se você definir android.enableD8 como false em gradle.properties, exclua essa flag ou defina-a como true:

        android.enableD8=true
      

Para saber detalhes, consulte Novo compilador DEX.

Simplificação incremental

Para projetos que usam recursos de linguagem Java 8, a simplificação incremental é ativada por padrão, o que pode melhorar os tempos de build.

A simplificação converte a sintaxe leve em uma forma que o compilador pode processar com mais eficiência.

Você pode desativá-la especificando o seguinte no arquivo gradle.properties do seu projeto:

        android.enableIncrementalDesugaring=false
      

Janela de saída simplificada

O Gradle Console foi substituído pela janela Build, que tem as guias Sync e Build.

Para saber detalhes sobre como usar a nova janela simplificada Build, consulte Monitorar o processo de build.

Atualizações em lote e simultaneidade de indexação

A sincronização com Gradle e os processos de indexação de ambiente de desenvolvimento integrado agora são muito mais eficientes, reduzindo o tempo perdido em muitas operações de indexação redundantes.

C++ e LLDB

Fizemos muitas melhorias na qualidade e no desempenho nas fases de programação, sincronização, compilação e depuração do desenvolvimento em C++. As melhorias incluem o seguinte:

  • Se você trabalha com projetos C++ grandes, vai notar uma melhoria significativa na redução do tempo gasto na criação de símbolos. O tempo de sincronização também é muito reduzido em projetos grandes.

  • A performance ao criar e sincronizar com o CMake foi melhorada pela reutilização mais agressiva dos resultados armazenados em cache.

  • A adição de formatadores ("impressoras bonitas") para mais estruturas de dados em C++ torna a saída do LLDB mais fácil de ler.

  • O LLDB agora funciona apenas com o Android 4.1 (API de nível 16) e versões mais recentes.

Observação: a depuração nativa com o Android Studio 3.0 ou mais recente não funciona no Windows de 32 bits. Se você estiver usando o Windows de 32 bits e precisar depurar código nativo, use o Android Studio 2.3.

Kotlin

Atualização do Kotlin para a versão 1.2.30

O Android Studio 3.1 inclui a versão 1.2.30 do Kotlin.

Código Kotlin agora analisado com verificação de lint da linha de comando

A execução de lint da linha de comando agora analisa suas classes do Kotlin.

Para cada projeto em que você quiser executar o lint, o repositório Maven do Google vai precisar ser incluído no arquivo build.gradle de nível superior. O repositório Maven já está incluído nos projetos criados no Android Studio 3.0 e versões mais recentes.

Ferramentas de desempenho

Exemplos de processos C++ nativos com o CPU Profiler

O CPU Profiler agora inclui uma configuração padrão para gravar rastros de amostras das linhas de execução nativas do seu app. Para usar essa configuração, implante o app em um dispositivo com Android 8.0 (API de nível 26) ou mais recente e selecione Sampled (Native) no menu suspenso de configurações de gravação do CPU Profiler. Depois disso, grave e inspecione um rastro como faria normalmente.

Você pode mudar as configurações padrão, como o intervalo de amostragem, criando uma configuração de gravação.

Para voltar a rastrear as linhas de execução Java, selecione uma configuração Sampled (Java) ou Instrumented (Java).

Filtrar rastros de CPU, resultados de alocação de memória e heap dumps

O CPU Profiler e o Memory Profiler incluem um recurso de pesquisa que permite filtrar os resultados da gravação de um rastreamento de método, alocações de memória ou heap dump.

Para pesquisar, clique em Filter no canto superior direito do painel, digite sua consulta e pressione Enter.

Dica:você também pode abrir o campo de pesquisa pressionando Ctrl + F (Command + F no Mac).

Na guia Flame Chart do CPU Profiler, as pilhas de chamadas que incluem métodos relacionados à sua consulta de pesquisa são destacadas e movidas para o lado esquerdo do gráfico.

Para saber mais sobre a filtragem por método, classe ou nome do pacote, consulte Gravar e inspecionar rastreamento de método.

Guia "Request" no Network Profiler

O Network Profiler agora inclui uma guia Request que fornece detalhes sobre pedidos de rede durante a linha do tempo selecionada. Nas versões anteriores, o Network Profiler fornecia apenas informações sobre as respostas da rede.

Visualização da linha de execução no Network Profiler

Depois de selecionar uma parte da linha do tempo no Network Profiler, você pode selecionar uma das seguintes guias para saber mais sobre a atividade da rede durante esse período:

  • Connection View: oferece as mesmas informações das versões anteriores do Android Studio. Lista os arquivos enviados ou recebidos durante o período selecionado da linha do tempo em todas as linhas de execução da CPU do app. Para cada pedido, você pode inspecionar o tamanho, o tipo, o status e a duração da transmissão.
  • Thread View: mostra a atividade de rede de cada uma das linhas de execução da CPU do app. Essa visualização permite inspecionar quais linhas de execução do app são responsáveis por cada pedido de rede.

Layout Inspector

O Layout Inspector ganhou novos recursos, incluindo algumas funcionalidades fornecidas anteriormente pelas ferramentas obsoletas Hierarchy Viewer e Pixel Perfect:

  • Botões de zoom e atalhos de teclado para navegar e inspecionar layouts
  • Sobreposição de grade de referência
  • Capacidade de carregar uma imagem de referência e usá-la como uma sobreposição (útil para comparar seu layout com um modelo de interface do usuário)
  • A opção Render subtree preview para isolar uma visualização em um layout complexo

Layout Editor

A Palette no Layout Editor recebeu muitas melhorias:

  • Reorganização de categorias para visualizações e layouts
  • Nova categoria Common para visualizações e layouts, em que você pode usar um comando Favorite para adições.
  • A pesquisa de visualizações e layouts foi melhorada.
  • Novos comandos para abrir a documentação de um elemento específico de visualização ou layout.

Você pode usar o novo comando Convert view na Component tree ou no editor de design para converter uma visualização ou layout em outro tipo de visualização ou layout.

Agora você pode criar restrições facilmente para itens próximos à visualização selecionada usando os novos botões Create a connection no inspetor de visualização na parte de cima da janela Attributes.

Run e Instant Run

O comportamento da opção Use same selection for future launches na caixa de diálogo Select deployment target ficou mais consistente. Se a opção Use same selection estiver ativada, a caixa de diálogo Select deployment target será aberta apenas na primeira vez que você usar o comando Run até que o dispositivo selecionado não esteja mais conectado.

Ao segmentar um dispositivo com o Android 8.0 (API de nível 26) ou mais recente, o Instant Run vai poder implantar mudanças nos recursos sem causar uma reinicialização do app. Isso é possível porque os recursos estão em um APK dividido.

Emulador

Para detalhes sobre as novidades e as mudanças no emulador desde o Android Studio 3.0, consulte as notas da versão do Android Emulator da versão 27.0.2 até a versão 27.1.12.

As principais melhorias incluem o seguinte:

  • Instantâneos de Quick Boot para salvar o estado do emulador e iniciar mais rapidamente, com a capacidade de usar o comando Save now para salvar um estado inicial personalizado.
  • Tela do emulador sem janelas.
  • Imagens do sistema para Android 8.0 (API de nível 26), Android 8.1 (API de nível 27) e prévia para desenvolvedores do Android P.

Melhorias na interface e na experiência do usuário

Mais dicas de ferramentas, atalhos de teclado e mensagens úteis

Adicionamos dicas de ferramentas e sobreposições úteis de mensagens em muitos lugares no Android Studio.

Para ver atalhos de teclado para muitos comandos, basta manter o ponteiro do mouse sobre um botão até que a dica de ferramenta apareça.

Menu Tools > Android removido

O menu Tools > Android foi removido. Os comandos que estavam anteriormente nesse menu foram movidos.

  • Muitos comandos foram movidos diretamente para o menu Tools.
  • O comando Sync project with gradle files foi movido para o menu File.
  • O comando Device Monitor foi removido, conforme descrito abaixo.

Device Monitor disponível na linha de comando

No Android Studio 3.1, o Device Monitor desempenha uma função menor do que anteriormente. Em muitos casos, a funcionalidade disponível pelo Device Monitor agora é fornecida por ferramentas novas e melhoradas.

Consulte a documentação do Device Monitor para instruções sobre como ele pode ser invocado na linha de comando e detalhes sobre as ferramentas que ele disponibiliza.