Android Studio Arctic Fox | 2020.3.1 (julho de 2021)

O Android Studio Arctic Fox é uma versão principal que inclui uma variedade de novos recursos e melhorias.

Numeração da nova versão

Atualização do número da versão do Android Studio

Mudamos o sistema de numeração de versões do Android Studio para deixá-lo mais alinhado com o IntelliJ IDEA (link em inglês), o ambiente de desenvolvimento integrado em que o Android Studio se baseia.

No sistema de numeração anterior, essa versão teria sido numerada como Android Studio 4.3 ou versão 4.3.0.1. Com o novo sistema de numeração, ela passa a ser Android Studio - Arctic Fox | 2020.3.1 ou a versão 2020.3.1.

Versão do IntelliJ Nome antigo Sistema de numeração antigo Novo sistema de ano Novo nome da versão
2020.3 4.3 4.3.0 2020.3.1 Arctic Fox | 2020.3.1

Veja como o número da versão do Android Studio será determinado a partir de agora:

<Year of IntelliJ Version>.<IntelliJ major version>.<Studio major version>.<Studio minor/patch version>

  • Os dois primeiros grupos de números representam a versão da plataforma IntelliJ em que determinada versão do Android Studio é baseada. Aqui, a versão é a 2020.3.
  • O terceiro grupo de números representa a versão principal do Studio, começando em 1 e aumentando um número para cada versão principal subsequente.
  • O quarto grupo de números representa a versão secundária/de patch do Studio, começando em 1 e aumentando um número a cada versão secundária.
  • Também daremos, para cada versão principal, um nome baseado em nomes de animais e com iniciais em ordem alfabética de A a Z. O nome desta versão é Arctic Fox (raposa-do-ártico, em inglês).

Atualização do número da versão do Plug-in do Android para Gradle

Mudamos o número da versão do Plug-in do Android para Gradle (AGP, na sigla em inglês) com o objetivo de melhorar a integração com a ferramenta de build do Gradle. Portanto, o AGP 7.0 será a próxima versão após o AGP 4.2.

Para ver mais detalhes, consulte as Mudanças do controle de versões nas notas da versão do AGP.

Plug-in do Android para Gradle 7.0.0

A versão mais recente do Plug-in do Android para Gradle inclui muitas atualizações. Para saber mais, leia as notas da versão completas do Plug-in do Android para Gradle.

Os testes de unidade agora usam o executor de testes do Gradle

Para melhorar a consistência geral das execuções de teste, o Android Studio agora usa o Gradle para executar todos os testes de unidade por padrão. Em muitos casos, essa mudança não afetará seu fluxo de trabalho de testes no ambiente de desenvolvimento integrado.

Por exemplo, quando você clica no comando Run no menu de contexto (visível ao clicar com o botão direito do mouse em uma classe de teste) ou na ação de gutter correspondente , por padrão, o Android Studio usa a configuração de execução do Gradle para executar os testes de unidade.

Menu de contexto para execução de testes

No entanto, o Android Studio não reconhece mais as configurações de execução do Android JUnit. Por isso, você precisa migrar as configurações de execução do Android JUnit que podem ser salvas como arquivos de projeto para configurações de execução do Gradle.

Para criar uma configuração de teste do Gradle, selecione o modelo para Gradle seguindo as instruções em Criar uma nova configuração de execução/depuração. Quando você cria uma nova configuração, ela aparece na caixa de diálogo Edit Configurations, na seção "Gradle":

Edição das configurações de teste no Android Studio

Se quiser inspecionar as configurações do Android JUnit que não são mais reconhecidas, você tem duas opções:

  • Abra as configurações salvas manualmente em um editor de texto. Os locais desses arquivos são especificados pelo usuário, mas eles costumam estar em <my-app>/.idea/runConfigurations/.
  • Procure configurações temporárias em <my-app>/.idea/workspace.xml e procure no nó <component name="RunManager" ...>. Exemplo:

    <component name="RunManager" selected="Gradle.PlantTest">
    …
    <configuration name="PlantTest" type="AndroidJUnit" factoryName="Android JUnit" nameIsGenerated="true">
          <module name="Sunflower.app" />
          <useClassPathOnly />
          <extension name="coverage">
            <pattern>
              <option name="PATTERN" value="com.google.samples.apps.sunflower.data.*" />
              <option name="ENABLED" value="true" />
            </pattern>
          </extension>
          <option name="PACKAGE_NAME" value="com.google.samples.apps.sunflower.data" />
          <option name="MAIN_CLASS_NAME" value="com.google.samples.apps.sunflower.data.PlantTest" />
          <option name="METHOD_NAME" value="" />
          <option name="TEST_OBJECT" value="class" />
          <option name="PARAMETERS" value="" />
          <option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
          <method v="2">
            <option name="Android.Gradle.BeforeRunTask" enabled="true" />
          </method>
        </configuration>
    

Melhorias no assistente de upgrade para AGP

O Assistente de upgrade do Plug-in do Android para Gradle agora tem uma janela de ferramentas persistente com a lista das etapas que vão ser concluídas. Outras informações também são apresentadas no lado direito da janela de ferramentas. Se necessário, também é possível escolher uma versão diferente do AGP para fazer upgrade. Clicar no botão Refresh atualiza as etapas correspondentes de atualização.

Nova janela de ferramentas persistente no assistente de upgrade

Refatoração para classes R não transitivas

Você pode usar classes R não transitivas com o Plug-in do Android para Gradle para criar builds mais rápidos para aplicativos com vários módulos. Isso ajuda a evitar a duplicação de recursos, garantindo que a classe R de cada módulo contenha apenas referências aos próprios recursos, sem extrair referências das dependências. Isso leva a builds mais atualizados e aos benefícios correspondentes de evitar a compilação.

Acesse esse recurso em Refactor > Migrate to Non-transitive R Classes.

Novo Inspetor de tarefas em segundo plano

Você pode visualizar, monitorar e depurar os workers em segundo plano do seu app usando o novo Inspetor de tarefas em segundo plano. Para começar, implante o app em um dispositivo com a Biblioteca do WorkManager 2.5.0 ou mais recente e selecione View > Tool Windows > App Inspection na barra de menus.

Workers ativos no Inspetor de tarefas em segundo plano

Para ver informações mais detalhadas, clique em um worker. Por exemplo, é possível ver a descrição dele, como ele foi executado, os detalhes da cadeia de workers e o resultado da execução.

Guia Worker Details

Você também pode ver uma representação visual de uma cadeia de workers. Para isso, selecione um worker na tabela e clique em Show Graph View na barra de ferramentas. Em seguida, você pode selecionar qualquer worker na cadeia para ver os detalhes dele ou, caso ele esteja na fila ou em execução no momento, interrompê-lo. Para retornar à tabela, clique em Show List View .

Cadeia de workers do Inspetor de tarefas em segundo plano

Para ajudar a investigar problemas de workers que falham durante a execução, você pode interromper um worker que está em execução ou na fila selecionando-o na tabela e clicando em Cancel Selected Worker na barra de ferramentas. Também é possível filtrar os workers na tabela pelas tags que você atribuiu a eles usando o menu suspenso All tags.

Atualizações do Database Inspector

O Database Inspector agora está incluído na nova janela da ferramenta App Inspection, onde você também pode encontrar o novo Inspetor de tarefas em segundo plano. Abra a janela da ferramenta App Inspection na barra de janelas de ferramentas ou selecione View > Tool Windows > App Inspection na barra de menus.

Exportar dados do Database Inspector

No Arctic Fox, é fácil exportar bancos de dados, tabelas e resultados de consulta do Database Inspector para salvar, compartilhar ou recriar localmente. Ao abrir um projeto de app no Android Studio e inspecionar o app no Database Inspector, você pode começar a exportar dados de uma destas maneiras:

  • Selecione um banco de dados ou uma tabela no painel Databases e clique em Export to file próximo à parte de cima do painel.
  • Clique com o botão direito do mouse em um banco de dados ou em uma tabela no painel Databases e selecione Export to file no menu de contexto.
  • Ao inspecionar uma tabela ou resultados de consulta em uma guia, clique em Export to file acima da tabela ou dos resultados da consulta.

Depois de selecionar uma ação de exportação, use a caixa de diálogo Export para ajudar você nas etapas finais, conforme mostrado abaixo. Se estiver tentando exportar um banco de dados, uma tabela ou resultados de consulta, você terá a opção de exportar os dados em um ou mais dos seguintes formatos: DB, SQL ou CSV.

Caixa de diálogo &quot;Export Database&quot;

Atualização na interface para gravação no Memory Profiler

Consolidamos a interface do usuário (IU) do Memory Profiler para diferentes atividades de gravação, como capturar um heap dump e gravar em Java, Kotlin e alocações de memória nativas.

Alocações de memória exibidas no Memory Profiler

O Memory Profiler oferece as seguintes opções:

  • Capture heap dump: veja objetos no seu app que usam a memória em um momento específico.
  • Record native allocations: veja como cada objeto C/C++ foi alocado durante um período.
  • Record Java/Kotlin allocations: veja como cada objeto Java/Kotlin foi alocado durante um período.

Confira como usar essas três opções:

  • Para capturar um heap dump, selecione Capture heap dump e escolha Record. Depois que o criador de perfil termina a captura do heap dump, a interface do Memory Profiler faz a transição para uma tela separada que mostra o heap dump.

    Exemplo de heap dump no Memory Profiler

  • Para gravar alocações nativas em dispositivos com Android 10 e versões mais recentes, selecione Record native allocations e Record. A gravação continua até você clicar em Stop . Depois disso, a interface do Memory Profiler faz a transição para uma tela separada que exibe a gravação nativa.

    No Android 9 e versões anteriores, a opção Record native allocations não está disponível.

  • Para gravar alocações Java e Kotlin, selecione Record Java / Kotlin allocations e escolha Record. Se o dispositivo está executando o Android 8 ou versões mais recentes, a interface do Memory Profiler faz a transição para uma tela separada que exibe a gravação em andamento. É possível interagir com a mini linha do tempo acima da gravação (por exemplo, para mudar o intervalo de seleção). Para concluir a gravação, selecione Stop .

    Visualização de alocações Java no Memory Profiler

    No Android 7.1 e versões anteriores, o Memory Profiler usa a gravação de alocação legada, que mostra a gravação na linha do tempo até você clicar em Stop.

Atualizações no projeto C++ vinculado

Movemos os arquivos não relacionados à configuração da pasta .cxx/ para a pasta build/. Os builds do CMake C++ exigem uma fase de configuração que gera o projeto Ninja usado para executar as etapas de compilação e vinculação. Os projetos gerados pelo CMake são difíceis de gerar e precisam sobreviver no Gradle limpos. Por isso, eles são armazenados em uma pasta chamada .cxx/, ao lado da pasta build/. Normalmente, o Plug-in do Android para Gradle observa mudanças na configuração e gera automaticamente o projeto Ninja de novo. No entanto, nem todos os casos podem ser detectados. Quando isso acontece, a opção "Refresh Linked C++ Project" poder ser usada para gerar um novo projeto Ninja de forma manual.

Nova matriz de teste para vários dispositivos

Agora, os testes de instrumentação podem ser executados em vários dispositivos em paralelo e ser investigados usando um painel de resultados de testes de instrumentação especializado. Usando esse painel, você pode determinar se os testes estão falhando devido ao nível da API ou a propriedades de hardware.

Painel de teste de instrumentação

Testar o app em uma ampla variedade de níveis da API e formatos é uma das melhores maneiras de garantir que todos os usuários tenham uma boa experiência ao usá-lo.

Para aproveitar esse recurso:

  1. Escolha Select Multiple Devices no menu suspenso de dispositivo de destino, na parte central de cima do ambiente de desenvolvimento integrado.

    Caixa de diálogo para modificação do conjunto de dispositivos

  2. Selecione os dispositivos de destino e clique em OK.

    Caixa de diálogo para modificação do conjunto de dispositivos

  3. Execute seus testes.

Para ver os resultados do teste no painel Run, acesse View > Tool Windows > Run.

O novo painel de resultados do teste permite filtrar os resultados por status, dispositivo e nível da API. Além disso, é possível classificar cada coluna clicando no cabeçalho. Ao clicar em um teste individual, você vai encontrar os registros e as informações dele para cada dispositivo.

Suporte a StateFlow na vinculação de dados

Para apps Kotlin que usam corrotinas, agora você pode usar StateFlow objetos como fonte de vinculação de dados para notificar automaticamente a interface sobre alterações nos dados. As vinculações de dados vão reconhecer o ciclo de vida e só serão acionadas quando a interface estiver visível na tela.

Para usar um objeto StateFlow com sua classe de vinculação, é preciso especificar um proprietário do ciclo de vida para definir o escopo do objeto StateFlow e, no layout, atribuir as propriedades e os métodos do componente ViewModel às visualizações correspondentes que usam expressões de vinculação, conforme mostrado no exemplo a seguir:

class ViewModel() {
   val username: StateFlow<String>
}
<TextView
    android:id="@+id/name"
    android:text="@{viewmodel.username}" />

Para um app Kotlin que usa o AndroidX, o suporte ao StateFlow vai ser adicionado automaticamente na funcionalidade de vinculação de dados, incluindo as dependências de corrotinas.

Para saber mais, consulte Trabalhar com objetos de dados observáveis.

Melhorias na importação sugerida

Melhoramos o número de bibliotecas que oferecem suporte para o recurso de importação sugerida e atualizamos o índice com mais frequência. A importação sugerida ajuda a importar com rapidez e facilidade determinados artefatos do Google Maven para a classe e o projeto do Gradle. Quando o Android Studio detecta símbolos não resolvidos de determinadas bibliotecas do Google, o ambiente de desenvolvimento integrado sugere a importação da biblioteca para a classe e o projeto.

Suporte a cache de configuração no Build Analyzer

O Build Analyzer identifica quando um projeto não tem o cache de configuração ativado e o oferece como uma otimização. O Build Analyzer executa uma avaliação de compatibilidade para informar se há algum problema com o cache de configuração no projeto antes da ativação dele.

Configuração de informações de cache no Build Analyzer

Suporte às ferramentas do Jetpack Compose

Agora oferecemos mais suporte à visualização e ao teste de apps que usam o Jetpack Compose. Para ter a melhor experiência de desenvolvimento com o Jetpack Compose, use a versão mais recente do Android Studio Arctic Fox para aproveitar os recursos do editor inteligente, como modelos para novos projetos e a capacidade de visualizar imediatamente a interface do Compose.

Visualização do Compose

Os seguintes parâmetros para métodos @Preview agora estão disponíveis:

  • showBackground: ative e desative um plano de fundo para sua visualização.
  • backgroundColor: defina uma cor para ser usada apenas na superfície de visualização.
  • uiMode: esse novo parâmetro pode assumir qualquer uma das constantes Configuration.UI_* e possibilita que você mude o comportamento da visualização para, por exemplo, definir o Modo noturno, para ver como o tema reage.

interface da visualização do Compose

Visualização interativa

Use esse recurso para interagir com os componentes de interface, clicar neles e conferir como o estado muda. Essa é uma forma rápida para ver como a interface reage e visualizar as animações. Para ativá-la, basta clicar no ícone interativo , e a visualização alterna entre os modos.

Para interromper, clique em Stop Interactive Preview na barra de ferramentas superior.

interface da visualização interativa

Implantar no dispositivo

Use esse recurso para implantar um snippet da sua interface em um dispositivo. Isso ajuda a testar partes pequenas do seu código no dispositivo sem precisar iniciar o aplicativo completo.

Clique no ícone Deploy to Device ao lado da anotação @Preview, ou na parte de cima da visualização, e o Android Studio vai implantar @Preview no dispositivo ou emulador conectado.

Edição em tempo real de literais

Adicionamos a edição em tempo real de literais para ajudar os desenvolvedores que usam o Compose a editar literais (strings, números e booleanos) rapidamente no código e conferir os resultados imediatamente sem precisar esperar pela compilação. O objetivo desse recurso é aumentar sua produtividade fazendo com que as mudanças no código apareçam quase instantaneamente nas visualizações, no emulador ou no dispositivo físico.

Ao editar números, as strings são atualizadas imediatamente na visualização e no dispositivo

Suporte ao Compose no Layout Inspector

O Layout Inspector permite consultar vários detalhes sobre o layout do app em execução no dispositivo conectado. É possível interagir com o app e ver atualizações em tempo real na ferramenta para depurar rapidamente problemas que possam surgir.

Você pode inspecionar layouts criados com o novo framework de interface declarativa do Android, o Jetpack Compose. Independentemente de o app usar layouts totalmente escritos no Compose ou que usam um híbrido de Compose e Views, o Layout Inspector ajuda a entender como os layouts são renderizados no dispositivo em execução.

Começar

Para começar, implante o app em um dispositivo conectado e abra a janela Layout Inspector selecionando View > Tool Windows > Layout Inspector. Se o Layout Inspector não se conectar automaticamente ao processo do app, selecione a opção preferida no menu suspenso. Em breve, o layout do app vai ser renderizado na janela de ferramentas. Para começar a inspecionar o layout do Compose, selecione o componente de layout visível na renderização ou na Component Tree.

Interface do Layout Inspector

A janela Attributes mostra informações detalhadas sobre a função do Compose selecionada no momento. Nessa janela, é possível inspecionar os parâmetros da função e seus valores, incluindo modificadores e expressões lambda. Para expressões lambda, o inspetor fornece um atalho para ajudar você a navegar até a expressão no código-fonte.

O Layout Inspector mostra todas as funções do Compose na pilha de chamadas que emitem componentes para o layout do seu app. Em muitos casos, isso inclui funções do Compose que são chamadas internamente pela biblioteca dele. Se você quiser conferir apenas as funções do Compose na Component Tree que o app chama diretamente, clique na ação de filtro , que pode reduzir o número de nós mostrados na árvore aos que você provavelmente quer inspecionar.

Melhorias no menu suspenso de implantação

O menu suspenso do dispositivo agora distingue os diferentes tipos de erros na configuração do dispositivo escolhida. Agora, a iconografia e as mudanças estilísticas diferenciam entre erros, que são seleções de dispositivos que resultam em uma configuração corrompida, e alertas, que são seleções de dispositivos que podem resultar em comportamentos inesperados, mas ainda podem ser executados.

Além disso, agora o Android Studio avisa se você tentar iniciar o projeto em um dispositivo que tenha um erro ou um aviso associado a ele.

Novo assistente de pareamento do Wear OS

O novo assistente de pareamento do Wear OS guia os desenvolvedores em cada etapa ao parear emuladores do Wear OS com smartphones físicos ou virtuais diretamente no Android Studio. O assistente ajuda a instalar o app complementar correto do Wear OS no smartphone e configurar uma conexão entre os dois dispositivos. Para começar, acesse o menu suspenso do dispositivo > Wear OS Emulator Pairing Assistant.

Demonstração do Assistente de pareamento do Wear OS

Modelo de layout responsivo

O Android Studio Arctic Fox agora inclui um novo modelo de layout que se adapta a várias dimensões de tela e redimensionamento de apps, como em smartphones, dispositivos dobráveis, tablets e modos de tela dividida. Ao criar um novo projeto ou módulo, selecione o modelo "Responsive Activity" para criar um layout com componentes que são redimensionados dinamicamente.

Modelo de layout responsivo em tela pequena Modelo de layout responsivo em tela média Modelo de layout responsivo em tela grande

Para começar, acesse File > New, selecione New Project ou New Module e escolha o modelo Responsive Activity.

Modelo de layout responsivo no novo assistente de projeto

Scanner de acessibilidade para o Layout Editor

Integramos o Android Accessibility Test Framework no Android Studio para ajudar você a encontrar problemas de acessibilidade nos seus layouts. A ferramenta informa problemas relacionados à acessibilidade e oferece correções sugeridas para alguns problemas comuns, como descrições de conteúdo ausentes ou de baixo contraste. Para iniciar o painel, clique no botão de relatório de erros no Layout Editor.

Demonstração do Scanner de acessibilidade

Suporte para Apple Silicon

O Android Studio e o Android Emulator agora oferecem suporte inicial a fluxos de trabalho principais do desenvolvedor ao executar a arquitetura de hardware do Apple Silicon (arm64), incluindo imagens do sistema do emulador correspondentes.

O suporte ainda não está disponível para todas as ferramentas de linha de comando do SDK e do NDK. Talvez seja necessário executar o Rosetta 2 na sua máquina para executar algumas ferramentas.

Suporte para Apple Silicon

Problemas conhecidos do Arctic Fox

Esta seção descreve os problemas conhecidos atuais do Android Studio Arctic Fox.

Os patches não funcionam no Windows para a v3.6-v4.1

Os patches na plataforma Windows para a v3.6-v4.1 do Android Studio Arctic Fox estável podem não funcionar.

Versões de patch

Confira abaixo as versões de patch do Android Studio Arctic Fox.

Android Studio Arctic Fox | 2020.3.1 Patch 4 (dezembro de 2021)

Esta atualização secundária inclui estas correções de bugs:

  • Plug-in do Android para Gradle
    • A definição de um Provider para VariantOutput.version pode ser interrompida com o cache de configuração.
    • O gradeResValues.xml não é atualizado na assinatura para lançamento.
  • D8/R8
    • java.lang.ClassCastException gerado no construtor da classe na versão reduzida pelo R8.
    • Ajuste de tipo inacessível durante a mesclagem de dex.
    • java.lang.VerifyError: o verificador falhou porque o campo de instância não pode ser acessado do objeto do tipo Reference.java.lang.Object.
  • Lint
    • Desativar verificação de lint MediaCapabilities.
    • O lint informa um erro falso instantâneo [instanciável] quando shrinkResources está ativado.
  • Modelos
    • A opção Import Module está esmaecida.

Para saber mais, consulte a postagem do blog 2020.3.1 Patch 4 (em inglês).

Android Studio Arctic Fox | 2020.3.1 Patch 3 (outubro de 2021)

Esta atualização secundária inclui estas correções de bugs:

  • Plug-in do Android para Gradle
    • O plug-in autônomo do lint não gerencia a dependência gradleApi() corretamente.
    • O build do JPS é acionado quando o build do Gradle é executado fora do Studio.
    • Ativar a KSP e Kapt em um projeto com os dois processadores que geram interrupção de origens causa falha em BundleLibraryClassesInputs.
  • Editor do C++
    • A interface congela devido ao processamento longo de JniReferencesSearch em segundo plano.
  • Database Inspector
    • Permite o salvamento de bancos de dados.
    • Não é possível exportar os dados usando a App Inspection/Database Inspector com um espaço em branco no caminho.
  • Dexer (D8)
    • Os lambdas do Java causam um comportamento inesperado ao criar subclasses de subclasses.
  • Redutor (R8)
    • Erro Cannot constrain type durante a minificação do r8.
    • Problema ao executar o R8 3.0.69 (do AGP 7.0.2) e o 3.0.72.

Para saber mais, consulte a postagem do blog 2020.3.1 Patch 3 (em inglês).

Android Studio Arctic Fox | 2020.3.1 Patch 2 (setembro de 2021)

Esta atualização secundária inclui estas correções de bugs:

  • Plug-in do Android para Gradle
    • A sincronização do Gradle foi lançada 10 VEZES no upgrade do AS Arctic Fox Canary 7 para o Canary 8
    • Simplificação e builds reproduzíveis
  • Build do C++
    • O Plug-in do Android para Gradle 7.0.0 não incluirá jniLibs no APK se o fechamento "tasks.whenTaskAdded" for usado.
  • Edição
    • MergedManifestRefreshListener fica preso em um loop infinito no Arctic Fox
  • Lint
    • "Verificação de lint para verificações de lint" não está em execução.
  • Redutor (R8)
    • ClassNotFoundException ao executar um build com o R8 no AGP7

Para saber mais, consulte a postagem do blog 2020.3.1 Patch 2 (link em inglês).

Android Studio Arctic Fox | 2020.3.1 Patch 1 (agosto de 2021)

Esta atualização inclui correções para os seguintes problemas:

  • Plug-in do Android para Gradle
    • O TypedefRemover usa o ASM5 e é incompatível com as origens do JDK 11 que exigem o ASM7.
    • Alguns novos blocos de DSL não podem ser usados com a DSL do Groovy no AGP 7.0.0.
    • O AGP 7.0.0 estável gera uma ExternalApiUsageException em libraryVariants.all{applicationId}.
  • Depurador C++
    • Erro "Configuração inválida do LLDB encontrada" no AS Arctic Fox ao iniciar uma sessão de depuração nativa no Mac M1
  • Resource Manager
    • (Windows) New -> Vector Asset -> picture.svg: caractere "menos" inválido no xml gerado
  • Redutor (R8)
    • NPE em BridgeHoisting
    • Após o upgrade para 7.0.0, o R8 falha com o erro "Uso inesperado no método após in-line"

Para saber mais, consulte a postagem do blog 2020.3.1 Patch 1 (em inglês).