Android Studio Dolphin | 2021.3.1 (setembro de 2022)

Veja a seguir os novos recursos do Android Studio Dolphin.

Novidades no Compose

Veja a seguir os novos recursos e melhorias para o Jetpack Compose no Android Studio.

Coordenação de animações no Compose

Caso suas animações sejam descritas em uma visualização de composição, agora você pode usar a visualização de animação para inspecionar e coordenar todas de uma só vez. Também é possível congelar uma animação específica.

GIF mostrando a inspeção com a IU de todas as animações

Anotações de várias visualizações do Compose

Agora, é possível definir uma classe de anotação que inclui várias definições de visualização e usar essa nova anotação para gerar essas visualizações de uma só vez. Use essa nova anotação para ver vários dispositivos, fontes e temas ao mesmo tempo, sem repetir essas definições para cada elemento combinável.

IU das anotações de várias visualizações

Contagens de recomposição do Compose no Layout Inspector

Ao depurar os layouts do Compose, é importante saber quando os elementos de composição fazem ou não a recomposição para entender se a IU foi implementada da forma correta. Por exemplo, se a recomposição acontece muitas vezes, o app pode estar fazendo mais trabalho do que o necessário. Por outro lado, os componentes que não são recompostos conforme o esperado podem ter comportamentos inesperados.

O Layout Inspector agora permite conferir quando os elementos de composição discretos na hierarquia de layout são recompostos ou ignorados. Essas informações são mostradas em tempo real enquanto você interage com seu app. Para começar, confirme se o app está usando o Compose 1.2.0-alpha03 ou uma versão mais recente. Em seguida, implante seu app normalmente.

Novo contador do Layout Inspector para elementos ignorados ou recompostos.

Abra a janela Layout Inspector e conecte-se ao processo do app. Em Component Tree, duas colunas novas vão aparecer ao lado da hierarquia de layout. A primeira coluna mostra o número de composições para cada nó. Já a segunda coluna mostra o número de elementos ignorados de cada nó. Você também pode encontrar informações parecidas no painel Attributes ao selecionar um elemento combinável na Component Tree ou em Layout Display.

Para redefinir a contagem, clique em Reset, próximo à parte de cima do painel Component Tree. A redefinição da contagem ajuda a entender quais elementos foram recompostos ou ignorados em uma interação específica com o app.

Ativação do contador do Layout Inspector para elementos ignorados ou recompostos

Atualização do assistente de pareamento do emulador do Wear OS

A partir do Android Studio Dolphin Canary 3, o assistente de pareamento do emulador do Wear OS apresenta recursos aprimorados que facilitam o gerenciamento e a conexão com emuladores do Wear. Agora, você pode fazer o seguinte:

  • ver os dispositivos Wear no Gerenciador de dispositivos;
  • parear vários dispositivos Wear com um único smartphone virtual ou físico;
  • reconectar automaticamente os dispositivos que já foram pareados antes durante a inicialização. O Android Studio agora lembra e faz o pareamento com o último dispositivo configurado.

Para usar esses novos recursos, confirme se os emuladores do smartphone têm o nível 30 da API ou mais recente e se a Google Play Store está instalada. Além disso, confira se o nível da API dos emuladores do Wear é 28 ou mais recente. Para fazer upgrade para imagens do sistema mais recentes nos seus dispositivos emulados, acesse Tools > SDK Manager.

Para ver mais informações, consulte a seção Usar o assistente de pareamento do emulador do Wear OS.

Atualização da barra de ferramentas do emulador do Wear OS

No Android Studio Dolphin Canary 2, a barra de ferramentas do emulador agora tem botões que simulam os botões físicos e ações comuns do dispositivo nos emuladores do Wear com o nível 28 ou mais recente da API. Os novos botões são: Botão 1, Botão 2, (disponível apenas no nível 30 da API ou mais recente), o botão com o desenho de mão, e o botão de inclinação. Aqui estão algumas das ações que você pode realizar usando os novos botões no emulador do Wear:

  • Para configurar seu dispositivo no modo ambiente, clique no botão com o desenho de mão.
  • Para retornar à última tela em que o dispositivo estava antes do modo ambiente, clique no botão de inclinação.

Para ver mais informações, consulte Realizar ações comuns no emulador.

Emulador com botões específicos do Wear

Novas configurações de execução no Wear OS

Novas configurações de execução foram adicionadas para agilizar a execução e depuração em plataformas específicas do Wear OS, como mostradores de relógio, Blocos e complicações. Você pode criar essas novas configurações na caixa de diálogo Run/Debug Configurations ao executar seu aplicativo.

Para ver mais informações, consulte Configurações de execução/depuração do Wear OS.

Novas configurações de inicialização do WearOS

Novidades no Logcat

O Logcat foi atualizado para facilitar a análise, a consulta e o rastreamento de registros.

Novo formatador

O Logcat agora formata os registros para verificar informações úteis com mais facilidade, como tags e mensagens, e identificar diferentes tipos de registros, como avisos e erros.

Nova formatação para registros no Logcat

Criar várias janelas no Logcat

Agora você pode criar várias guias no Logcat, para alternar facilmente entre diferentes dispositivos ou consultas. Clique e arraste para reorganizar as guias e, para mudar o nome, clique com o botão direito em uma delas.

Além disso, para facilitar a comparação entre dois conjuntos de registros, agora é possível dividir a visualização de uma guia ao clicar com o botão direito na visualização de registro e selecionar Split Right ou Split Down. Para fechar uma divisão, clique com o botão direito do mouse e selecione Close. Cada divisão permite que você defina uma conexão de dispositivo, opções de visualização e consulta.

Criar várias janelas do Logcat usando divisões

Alternar entre predefinições de visualização

O Logcat agora permite que você alterne rapidamente entre os modos de visualização Standard, Compact e Custom ao clicar em Seletor do modo de visualização. Cada modo de visualização oferece uma configuração padrão diferente para mostrar mais ou menos informações, como carimbos de data/hora, tags e IDs dos processos (PID, na sigla em inglês). Você também pode personalizar cada um desses modos de visualização padrão, bem como um modo de visualização personalizado, selecionando Modify View.

Captura de tela que mostra como alternar entre diferentes modos de visualização

Na versão anterior do Logcat, você tinha a opção de usar a pesquisa de strings com suporte às expressões regulares ou criar um novo filtro ao preencher vários campos usando a IU do Logcat. A primeira opção deixou a pesquisa mais complexa, e a segunda opção tornou o compartilhamento e a configuração de consultas mais difíceis. Agora simplificamos a experiência com a introdução de pesquisas de chave-valor no campo de consulta principal.

Captura de tela da nova sintaxe de consulta com preenchimento automático

Esse novo sistema pesquisa fornece o que você quer consultar com mais precisão e não depende de expressões regulares. Ele também pode recuperar consultas anteriores do histórico e compartilhar essas consultas com outras pessoas. Além disso, você ainda tem a opção de usar as expressões regulares e excluir registros com base nas chaves-valor. Veja alguns exemplos de como usar o novo sistema de consulta. No entanto, você também pode começar a digitar no campo de consulta para ver sugestões:

  • PIDs do projeto de app local: package:mine
  • Valores específicos:
    • package:<package-ID>
    • tag:<tag>
    • level:[VERBOSE | INFO | ASSERT |DEBUG | WARN | ERROR ]
  • Exclua um valor específico colocando - antes da chave:
    • -tag:<exclude-tag>
  • Use expressões regulares com uma determinada chave, colocando ~ depois dela:
    • tag~:<regular-expression-tag>
    • Combine os dois com a tag de exclusão: -tag~:<exclude-regular-expression-tag>

Também é possível ver um histórico clicando em Seletor do histórico de consultas no campo de consulta e selecionando uma das opções no menu suspenso. Para adicionar uma consulta como favorita e deixá-la no topo da lista em todos os projetos do Studio, clique em Consulta favorita no final do campo de consulta.

Captura de tela do histórico de consultas de com os favoritos

Rastrear registros em falhas ou reinicializações do app

O novo Logcat agora facilita o rastreamento de registros no seu app em falhas e reinicializações. Assim, você não perde registros importantes nesses eventos. Quando o Logcat observa que o processo do app foi interrompido e reiniciado, você vê uma mensagem na saída, como PROCESS ENDED e PROCESS STARTED, conforme mostrado abaixo:

Captura de tela das reinicializações de processos no Logcat

Além disso, a reiniciação do Logcat preserva a configuração da sessão, como divisões de guia, filtros e opções de visualização, para que você possa retornar a ela sem problemas.

Dispositivos gerenciados pelo Gradle

Para melhorar a consistência, a performance e a confiabilidade ao usar Dispositivos virtuais Android nos seus testes de instrumentação automatizados, estamos lançando dispositivos gerenciados pelo Gradle. Esse recurso, disponível para o nível 27 da API e mais recentes, permite configurar dispositivos de teste virtuais nos arquivos do Gradle do projeto. O sistema de compilação usa as configurações para gerenciar totalmente (criar, implantar e excluir) esses dispositivos ao executar testes automatizados.

Esse recurso concede visibilidade ao Gradle, não apenas para os testes que você está executando, mas também para o ciclo de vida dos dispositivos, melhorando a qualidade da sua experiência de testes porque:

  • processa problemas relacionados ao dispositivo para garantir que seus testes sejam executados;
  • usa snapshots do emulador para melhorar o tempo de inicialização do dispositivo e o uso de memória, além de restaurar dispositivos para um estado limpo entre os testes;
  • armazena em cache os resultados de testes e executa novamente apenas aqueles que provavelmente vão fornecer resultados diferentes;
  • oferece um ambiente consistente para executar os testes entre execuções locais e remotas.

Além disso, os dispositivos gerenciados pelo Gradle apresentam um novo tipo de dispositivo emulador, chamado dispositivo de teste automatizado (ATD, na sigla em inglês), que é otimizado para melhorar a performance durante testes de instrumentação. Combinado com o suporte à fragmentação de testes, é possível dividir o conjunto de testes em várias instâncias ATD para reduzir o tempo total de execução. Para saber mais sobre dispositivos gerenciados pelo Gradle e recursos associados, consulte Ajustar testes com dispositivos gerenciados pelo Gradle.

Suporte ao R8 usando arquivos de mapeamento com base nos deslocamentos de instruções DEX

Ao otimizar as informações da linha, o R8 agora pode codificar os dados em objetos de informações de depuração compartilhados em tabelas de linha com base nos deslocamentos de instruções. Isso reduz bastante a sobrecarga das informações da linha. Dessa forma, as linhas nos métodos não são mais consecutivas, mas podem mudar em intervalos, dependendo do tamanho das instruções. Algumas ferramentas não consideram essa codificação compartilhada.

Além disso, as VMs do Android a partir do O (API de nível 26) podem mostrar deslocamentos de instruções em stack traces, se o método não tem informações do número da linha. Ao compilar com o minSdk 26 ou mais recente e sem informações sobre os arquivos de origem, o R8 remove todos os dados do número da linha.

Os lambdas sem estado não são mais simplificados como Singletons

Os lambdas sem estado não são mais alocados como Singletons durante a simplificação. A representação como Singleton aumenta a sobrecarga de tamanho do código devido ao campo adicionado e ao inicializador de classe, bem como a sobrecarga de inicialização devido à inicialização da classe estática. Agora, os lambdas sem estado são alocados em sites de uso da mesma forma que lambdas com estado (lambdas com capturas).

O R8 evita a lentidão da verificação no momento da execução no Android

Para eliminar problemas de desempenho em ambientes de execução do Android (Dalvik e ART), o R8 (não D8) agora introduz stubs de biblioteca e delineia chamadas para métodos de biblioteca das classes e dos métodos de biblioteca que podem não existir no momento da execução. Dessa forma, muitos problemas de verificação são eliminados, e a performance do ambiente de execução é melhorada. Esse recurso está sempre ativo.

Suporte às APIs do JDK-11 com a simplificação das APIs do Java 8 ou versão mais recente

Ao usar a dependência coreLibraryDesugaring, agora há suporte para uma biblioteca de implementação baseada no JDK-11. Consulte o registro de alterações do desugar_jdk_libs para ver mais informações.

Versões de patch

Esta é uma lista das versões de patch do Android Studio Dolphin.

Android Studio Dolphin | 2021.3.1 Patch 1 (outubro de 2022)

Com a versão Patch 1, o Android Studio Dolphin agora oferece suporte ao plug-in do Kotlin 1.7.20. Esta atualização secundária também inclui estas correções de bugs:

Problemas corrigidos
Plug-in do Android para Gradle
A execução de testes Android instrumentados pelo Gradle não aplica corretamente a simplificação de leitura
O AGP 7.3.0 interrompe a sincronização do Gradle para projetos da plataforma Gradle.
Dexer (D8)
Adição de uma API pública para resolução de conflitos ao mesclar DEX (para que o Bazel permita classes duplicadas).
Importar/Sincronizar
A importação de projetos do Gradle falha após o upgrade do Chipmunk Patch 2 (2021.2.1).
Recursos
NPE em AarResourceRepositoryCache.createCacheData (AS Dolphin+)
Redutor (R8)
Os metadados do Kotlin não são copiados quando os campos de tipo são substituídos.
Conversão inesperada do tipo impreciso: TOP (tudo).
O Gradle 7.3.0 causa um erro de build com.android.tools.r8.CompilationFailedException no APK.
Remoção de construtores padrão inativos no modo de compatibilidade.
Conflito com o Markdown da JetBrains.
Suporte a ThreadLocal.withInitial(java.util.function.Provider
O AGP 7.3 gera dex para classes com construtor corrompido.
Tentativa inesperada de determinar se um código não CF precisa de simplificação
ktor VerifyError.
Valor indefinido encontrado durante a compilação gerada ao processar a okio-jvm 3.2.0
Falha de compilação de um objeto em linha com instâncias indiretas de usuários
java.lang.IllegalAccessError com R8 3.3.75.