O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Novos recursos na versão de pré-lançamento do Android Studio

O Android Studio 4.1 foi lançado para o Canal estável. Faça o download aqui.

O Android Studio 4.2 está nos Canais Beta.

O Android Studio Arctic Fox | 2020.3.1 está nos Canais Canary e de Desenvolvedor.

Para ver as notícias mais recentes sobre as versões, incluindo uma lista das principais correções em cada uma, consulte também as Atualizações de versão (link em inglês).

Se você encontrar algum problema ao usar uma versão de pré-lançamento do Android Studio, informe-nos. Seus relatórios de bugs ajudam a melhorar o Android Studio.

Android Studio Arctic Fox | 2020.3.1

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 com base no qual o Android Studio foi criado.

No sistema de numeração anterior, este seria o Android Studio 4.3 ou a versão 4.3.0.1. No novo sistema de numeração, ele passa a ser o Android Studio Arctic Fox | 2020.3.1 Canary 1 ou a versão 2020.3.1.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 Canary 1 4.3.0.1 2020.3.1.1 Arctic Fox | 2020.3.1 Canary 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 uma 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 para cada versão secundária subsequente.
  • 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 para o Plug-in do Android para Gradle

Estamos atualizando o número da versão do Plug-in do Android para Gradle (AGP, na sigla em inglês) para melhorar a integração com a ferramenta de compilação Gradle subjacente. 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.

Editor C++: definir o ponto de execução no depurador

Na janela do editor de código C++, é possível definir um ponto de execução arbitrário ao executar seu app no depurador. Esse recurso é útil quando você quer sair de uma repetição ou forçar um caminho diferente com código ramificado.

Definição do ponto de execução no editor de código C/C++

Para usar esse recurso, defina um ponto de interrupção no seu código e execute o app no depurador. Quando o programa atingir esse ponto de interrupção, arraste a seta amarela até a linha do código que você quer executar em seguida e solte-a, ignorando qualquer instrução entre o ponto de interrupção e o novo ponto de execução.

A mudança do ponto de execução não altera o conteúdo da memória (pilha ou heap) nem qualquer outro estado do aplicativo. Por exemplo, as variáveis locais na pilha retêm os valores deles mesmo após mudanças nos pontos de execução.

Esse recurso está disponível para as ABIs arm64-v8a, armeabi-v7a e x86_64, mas não para a ABI x86 de 32 bits.

Ele é baseado na funcionalidade subjacente no editor de CLion do JetBrains. Para saber mais sobre esse recurso e as limitações dele, consulte esta postagem do blog (link em inglês) do JetBrains.

Compatibilidade com StateFlow na vinculação de dados

Para apps Kotlin que usam corrotinas, agora você pode usar objetos StateFlow como uma fonte de vinculação de dados para notificar automaticamente a IU sobre mudanças nos dados. As vinculações de dados vão reconhecer o ciclo de vida e só serão acionadas quando a IU 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 para as visualizações correspondentes usando 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, a compatibilidade com StateFlow será adicionada 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.

Novo WorkManager Inspector

Em uma versão anterior do Android Studio, introduzimos o Database Inspector para ajudar os desenvolvedores a entender e depurar os bancos de dados SQLite do app deles. O Database Inspector foi criado em um framework de inspeção de apps projetado para oferecer compatibilidade com diferentes tipos de inspetores e diferentes aspectos do app.

No Arctic Fox Canary 3 e versões mais recentes, use o novo WorkManager Inspector, que ajuda a visualizar, monitorar e depurar os workers em segundo plano do app ao usar a biblioteca WorkManager 2.5.0-beta02 ou mais recente.

Agora o WorkManager Inspector e o Database Inspector podem ser acessados selecionando View > Tool Windows > App Inspection na barra de menus. Ao implantar um app usando o WorkManager 2.5.0-beta02 ou mais recente em um dispositivo com a API de nível 26 ou mais recente, você verá workers ativos na guia WorkManager Inspector, como mostrado abaixo.

WorkManager Inspector

Em seguida, selecione um worker da tabela para ver informações mais detalhadas, como uma descrição dele, como ele foi executado, os detalhes da cadeia de workers e o resultado da execução do worker.

Detalhes do WorkManager Inspector

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.

Se você quiser uma representação visual de uma cadeia de workers, 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 WorkManager Inspector

O Android Studio agora usa 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 já existentes 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ê tiver criado uma nova configuração, ela aparecerá 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>
    

Plug-in do Android para Gradle 7.0

O cache de compilação do Plug-in do Android para Gradle foi removido

O cache de compilação do AGP foi removido no AGP 4.1. Introduzido no AGP 2.3 para complementar o cache de compilação do Gradle, o cache de compilação do AGP foi substituído inteiramente pelo do Gradle no AGP 4.1. Essa mudança não afeta o tempo de compilação.

No AGP 7.0, as propriedades android.enableBuildCache e android.buildCacheDir e a tarefa cleanBuildCache foram removidas.

Usar o código-fonte Java 11 no seu projeto

Agora, é possível compilar até o código-fonte Java 11 no projeto do app, o que permite usar recursos de linguagem mais recentes, como métodos de interface privados, o operador losango para classes anônimas e a sintaxe de variáveis local para parâmetros lambda.

Para ativar esse recurso, defina compileOptions como a versão Java desejada e defina compileSdkVersion como 30 ou mais:

Kotlin

// build.gradle.kts

android {
    compileSdkVersion(30)

    compileOptions {
      sourceCompatibility(JavaVersion.VERSION_11)
      targetCompatibility(JavaVersion.VERSION_11)
    }

    kotlinOptions {
      jvmTarget = "11"
    }
}

Groovy

// build.gradle

android {
    compileSdkVersion 30

    compileOptions {
      sourceCompatibility JavaVersion.VERSION_11
      targetCompatibility JavaVersion.VERSION_11
    }

    // For Kotlin projects
    kotlinOptions {
      jvmTarget = "11"
    }
}

Configurações de dependência removidas

No AGP 7.0 Canary 3, as seguintes configurações (ou escopos de dependência) foram removidas:

  • compile
    Dependendo do caso de uso, foi substituído por api ou implementation.
    Também se aplica a variantes *Compile, por exemplo: debugCompile.
  • provided
    Foi substituído por compileOnly.
    Também se aplica a variantes *Provided, por exemplo: releaseProvided.
  • apk
    Foi substituído por runtimeOnly.
  • publish
    Foi substituído por runtimeOnly.

Na maioria dos casos, o Assistente de upgrade para AGP migrará seu projeto automaticamente para as novas configurações

Mudança do caminho de classe ao compilar com o Plug-in do Android para Gradle

Se você está compilando com o Plug-in do Android para Gradle, seu caminho de classe de compilação pode mudar. Como o Plug-in do Android para Gradle agora usa as configurações api/implementation internamente, alguns artefatos podem ser removidos do caminho de classe de compilação. Se você precisa de uma dependência do Plug-in do Android para Gradle durante o tempo de compilação, adicione-a como uma dependência explícita.

Scanner de acessibilidade para o Layout Editor

O Android Studio agora se integra ao Android Accessibility Test Framework para ajudar a encontrar problemas de acessibilidade nos seus layouts. Ao usar o Layout Editor, clique no botão Accessibility Scanner Botão do Scanner de acessibilidade para iniciar o verificador. A ferramenta também oferece correções sugeridas para alguns problemas comuns, como a falta de descrições de conteúdo.

O Scanner de acessibilidade está disponível no Canary 8.

Scanner de acessibilidade no Android Studio

Compatibilidade com o Jetpack Compose

O kit de ferramentas Jetpack Compose traz uma abordagem moderna para criar a IU do seu app. O kit de ferramentas também oferece todos os benefícios do Kotlin, como ajudar a escrever um código conciso e idiomático que seja totalmente interoperável com o Java.

Use a versão mais recente do Android Studio 4.2 para ter a melhor experiência de desenvolvimento com o Jetpack Compose. Isso porque ao usar o Android Studio para desenvolver seu app com o Jetpack Compose, você pode aproveitar os recursos do editor inteligente, como os modelos em New Project e a visualização imediata da IU do Compose.

Para saber mais e começar a usar, acesse a visão geral do Jetpack Compose.

Compatibilidade com as ferramentas do Jetpack Compose na versão Arctic Fox | 2020.3.1

O Android Studio agora também é compatível com visualização e teste de apps que usam o Jetpack Compose.

Pré-lançamento 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 que será usada apenas na superfície de visualização.
  • uiMode: esse novo parâmetro pode assumir qualquer uma das constantes Configuration.UI_* e permite que você mude o comportamento da visualização para, por exemplo, definir como o Modo noturno para ver como o tema reage.

Visualização interativa

Nesse modo, você pode interagir com os componentes da IU, clicar neles e ver como o estado muda. Essa é uma forma rápida para ver como a IU reage e visualizar as animações. Para ativá-la, basta clicar no ícone interativo e a visualização alternará os modos.

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

Implantar no dispositivo

Use esse recurso para implantar um snippet da IU em um dispositivo. Isso ajudará a testar pequenas partes do seu código no dispositivo sem precisar iniciar o app completo.

Clique no ícone de implantação no dispositivo ao lado da anotação @Preview, ou na parte superior da visualização, e o Android Studio implantará @Preview no dispositivo ou emulador conectado.

API Preview Data Sources

A nova API Data Sources permite gerar visualizações a partir dos seus dados. Se você tiver uma lista de dados existente ou uma lista de temas, essa API permitirá injetá-los como um parâmetro no método @Preview.

class HelloWorldProvider :
   CollectionPreviewParameterProvider<String>(
       listOf("Hello World", "Привет мир", "Olá Mundo", "Hola Mundo"))

@Preview
@Composable
fun HelloWorldPreview(
   @PreviewParameter(HelloWorldProvider::class) text: String
) {
   MaterialTheme {
       Text(text = text)
   }
}

Para ativar os recursos acima, o build.gradle do módulo precisa conter as seguintes configurações:

  android {
  …
  buildFeatures {
    compose true
  }
  composeOptions {
     kotlinCompilerExtensionVersion = "0.1.0-dev13"
     kotlinCompilerVersion = "1.3.70-dev-withExperimentalGoogleExtensions-20200424"
   }
}

Nova matriz de teste para vários dispositivos

A partir do Android Studio Arctic Fox, os testes de instrumentação podem ser executados em vários dispositivos em paralelo e analisados com um painel de resultados de teste de instrumentação especializado. Usando esse painel, você pode determinar se os testes estão falhando devido ao nível da API ou às 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 superior do ambiente de desenvolvimento integrado).

    Lista suspensa de dispositivo de destino

  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 do teste 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, você verá os registros e as informações de cada dispositivo individualmente.

Problemas conhecidos do pré-lançamento do Compose

androidx.ui.foundation.Dialog não é compatível com a visualização do Compose no momento.

Problemas conhecidos do pré-lançamento do Arctic Fox

Esta seção descreve os problemas conhecidos do pré-lançamento do Arctic Fox no Android Studio.

Os patches de atualização não funcionam no Canary 2

Em máquinas Linux e macOS, os patches de atualização não estão funcionando com o Canary 2. Para fazer upgrade para a versão Canary 2, faça o download da versão completa e instale-a.

Android Studio 4.2

Esta seção fornece um resumo dos novos recursos e das mudanças na versão de pré-lançamento do Android Studio 4.2.

Configurar a assinatura de apps por variante

Agora, é possível ativar ou desativar a assinatura de apps no Plug-in do Android para Gradle por variante.

Este exemplo mostra como definir a assinatura de apps por variante usando o método onVariants() em Kotlin ou Groovy:

androidComponents {
    onVariants(selector().withName("fooDebug"), {
        signingConfig.enableV1Signing.set(false)
        signingConfig.enableV2Signing.set(true)
    })

Como otimizar os builds do Gradle para o JDK 11

Quando a ferramenta de compilação do Gradle é executada no Android Studio, ela usa a versão padrão do JDK definida no Studio. Em versões anteriores, o JDK 8 era usado por padrão. No entanto, na versão 4.2, o JDK 11 passou a ser o padrão. Essa atualização para o JDK 11 afeta a configuração padrão do coletor de lixo da JVM, já que o JDK 8 usa o coletor de lixo paralelo, enquanto o JDK 11 usa o coletor de lixo G1 (link em inglês).

Para potencialmente melhorar o desempenho do build, recomendamos testar seus builds do Gradle com o coletor de lixo paralelo. Em gradle.properties, defina o seguinte:

org.gradle.jvmargs=-XX:+UseParallelGC

Se já houver outras opções definidas nesse campo, adicione uma nova opção:

org.gradle.jvmargs=-Xmx1536m -XX:+UseParallelGC

Para medir a velocidade do build com diferentes configurações, consulte Criar perfil para seu build.

Rastreamento do sistema: melhorias nas métricas para memória e gráficos

No CPU Profiler, o recurso Rastreamento do sistema agora inclui novas métricas para analisar o desempenho do app.

Tabela de eventos

A tabela "Events" é uma nova guia no lado direito do painel Analysis. Essa tabela lista todos os eventos de rastreamento na linha de execução selecionada.

Tabela de eventos de rastreamento do sistema

Novos rastreamentos e grupos de rastreamentos

Agora, há mais dados disponíveis no Rastreamento do sistema para rastros de apps implantados em dispositivos com o Android 9 ou versões mais recentes.

BufferQueue (na seção "Display")

Essa nova faixa mostra a contagem de buffers da superfície BufferQueue (0, 1 ou 2) do app. Ela pode ajudar a entender o estado dos buffers de imagem à medida que eles se movem entre os componentes gráficos do Android. Por exemplo, o valor 2 significa que o app está em buffer triplo no momento, o que pode resultar em latência extra de entrada.

Fila do buffer do Rastreamento do sistema

Frequência da CPU (na seção "CPU cores")

Além dos dados de programação da CPU, também incluímos a frequência da CPU por núcleo. Isso mostra como cada núcleo está funcionando e pode dar uma ideia de quais deles são os núcleos "grandes" ou "pequenos" em processadores modernos para dispositivos móveis.

Frequência da CPU de rastreamento do sistema

Process Memory (RSS)

A nova Process Memory (RSS) mostra a quantidade de memória física atualmente em uso pelo app.

Memória do processo de rastreamento do sistema (RSS)

Total

Essa é a quantidade total de memória física atualmente em uso pelo seu processo. Em sistemas baseados em Unix, isso é conhecido como "Tamanho do conjunto de residentes" e é a combinação de toda a memória usada por alocações anônimas protegidas pelo arquivo de troca, mapeamentos de arquivos carregados na memória de uma página por vez e alocações de memória compartilhadas, acessadas por vários processos e alocadas por uma variedade de mecanismos.

Para desenvolvedores do Windows, o "Tamanho do conjunto residente" é parecido com o "Tamanho do conjunto de trabalho".

Allocated

Esse contador rastreia a quantidade atual de memória física em uso pelas alocações normais de memória do processo. Essas alocações são anônimas (não protegidas por um arquivo específico) e particulares (não compartilhadas).

File Mappings

Esse contador rastreia a quantidade de memória física em uso por qualquer mapeamento de arquivo pertencente ao processo.

Shared

Esse contador rastreia a quantidade de memória física em uso para compartilhar memória entre esse processo e outros processos no sistema.

Retrace do R8 agora disponível nas ferramentas de linha de comando

Disponível na versão 4.0 das ferramentas de linha de comando, o retrace do R8 é uma ferramenta autônoma para receber o stack trace original de um stack trace ofuscado.

É possível fazer o download desse pacote com o SDK Manager, que instala o retrace do R8 em android_sdk/cmdline-tools. Como alternativa, faça o download do pacote de ferramentas de linha de comando autônoma.

Para informações de uso, consulte Retrace do R8 no guia do usuário.

Nova ação de atualização do Layout Inspector

Introduzido no Android Studio 4.0, o Layout Inspector foi projetado para inspeção em tempo real da pilha de IU do app em execução. No entanto, nem sempre você quer que o Layout Inspector reflita imediatamente o que está acontecendo no seu app, porque pode ser útil inspecionar um instantâneo do layout do app em um momento específico ou minimizar o impacto do desempenho das atualizações em tempo real no seu app.

Pausar atualizações em tempo real e atualizar a captura de tela no Layout Inspector.

Para carregar manualmente um instantâneo dos dados da IU do app, primeiro desative a opção Live Updates. Depois, clique no botão Refresh para capturar um novo instantâneo da pilha de IU para inspeção. O Layout Inspector agora lembra sua preferência para manter a opção Live Updates ativada ou desativada entre as sessões.

Compatibilidade do Plug-in do Android para Gradle com o Jetpack Compose

A partir do Plug-in do Android para Gradle 4.2 Canary 13, apenas o Jetpack Compose Compiler 1.0.0-alpha-04 e versões mais recentes serão compatíveis.

Assistente de upgrade para AGP

A partir do Android Studio 4.2 Canary 5, um assistente de upgrade para o Plug-in do Android para Gradle pode ajudar a atualizar a versão do AGP do seu projeto.

Caixa de diálogo do assistente de upgrade do Plug-in do Android para Gradle

Criado sobre a funcionalidade de upgrade do AGP atual, essa ferramenta orienta você sobre atualizações/refatorações de todo o projeto e inclui uma visualização das atualizações para ajudar a evitar possíveis alterações interruptivas antes de executar o upgrade do AGP.

Visualização das mudanças a serem realizadas pelo Assistente de upgrade

Compatibilidade com o Safe Args

Safe Args é um plug-in do Gradle que gera classes simples de objeto e builder para navegação segura e acesso a quaisquer argumentos associados. O Android Studio 4.2 Canary 9 e versões mais recentes incluem compatibilidade especial com o Safe Args, conforme descrito abaixo:

  • preenchimentos automáticos para Directions, Args e as várias classes de criação;
  • compatibilidade com plug-ins safe args do Java e Kotlin;
  • Navegação da origem para XML

Database Inspector

Melhorias no Editor de consultas

O Database Inspector inclui algumas melhorias para ajudar você a criar e executar suas instruções SQL personalizadas. Ao abrir o inspetor e depois uma guia New query, você verá uma superfície de editor redimensionável maior para criar e formatar suas consultas, conforme mostrado abaixo.

Editor do DB Inspector

Além disso, agora fornecemos um histórico de suas consultas anteriores. Ao clicar no botão Show query history Exibir botão do histórico de consultas, você verá uma lista das consultas executadas anteriormente no banco de dados selecionado. Clique em uma consulta na lista para uma visualização de toda a consulta no editor e pressione Enter para copiá-la no editor. Em seguida, clique em Run para executar a instrução.

Executar comando no editor de consultas

Modo off-line

Nas versões anteriores do Android Studio, desconectar-se de um processo de app ao usar o Database Inspector resultava no fechamento do inspetor e dos dados. No Android Studio 4.2 Canary 8 e versões mais recentes, adicionamos a capacidade de continuar a inspecionar os bancos de dados do app após a desconexão de um processo para facilitar a depuração do seu app após uma falha.

Quando ocorre uma desconexão, o Database Inspector faz o download dos seus bancos de dados e os disponibiliza no modo off-line. Quando estiver off-line, será possível abrir tabelas e executar consultas.

Lembre-se de que, quando você se reconecta a um processo de app ativo, o Database Inspector retorna ao modo ativo e mostra apenas os dados que estão no dispositivo. Ou seja, os dados exibidos no modo off-line não são mantidos quando você se reconecta a um processo de app. Por isso, o Database Inspector não permite a edição ou a execução de instruções de modificação no modo off-line.

Nova configuração removable para módulos de recursos

O Plug-in do Android para Gradle 4.2 usa o bundletool 1.0.0, que introduz uma mudança de comportamento para apps que usam módulos de recursos: qualquer módulo de recurso especificado como dist:install-time que não esteja explicitamente marcado como dist:removable se tornará não removível por padrão. Essa nova configuração otimiza a fusão de módulos de tempo de instalação com o módulo base, potencialmente melhorando o desempenho em alguns apps.

Para mais informações sobre essa nova configuração, consulte a documentação da tag dist:removable na página sobre o manifesto do módulo de recursos.

Plug-in do Android para Gradle 4.2

Nova propriedade do Gradle: android.native.buildOutput

Para reduzir a sobrecarga na saída de build, o AGP 4.2 filtra mensagens de builds nativos que usam CMake e ndk-build, exibindo apenas a saída do compilador C/C++ por padrão. Antes disso, uma linha de saída era gerada para cada arquivo criado, resultando em uma grande quantidade de mensagens informativas.

Se você quiser ver toda a saída nativa, defina a nova propriedade do Gradle android.native.buildOutput como verbose.

É possível definir essa propriedade no arquivo gradle.properties ou pela linha de comando.

gradle.properties
android.native.buildOutput=verbose

Linha de comando
-Pandroid.native.buildOutput=verbose

O valor padrão dessa propriedade é quiet.

Mudança de comportamento para arquivos gradle.properties

A partir do AGP 4.2, não é mais possível substituir as propriedades Gradle de subprojetos. Em outras palavras, se você declarar uma propriedade em um arquivo gradle.properties em um subprojeto em vez do projeto raiz, ele será ignorado.

Como exemplo, em versões anteriores, o AGP leria valores de projectDir/gradle.properties, projectDir/app/gradle.properties, projectDir/library/gradle.properties etc. Para módulos de apps, se a mesma propriedade do Gradle estivesse presente em projectDir/gradle.properties e projectDir/app/gradle.properties, o valor de projectDir/app/gradle.properties teria precedência.

No AGP 4.2, esse comportamento foi mudado, e o AGP não carrega valores de gradle.properties em subprojetos (por exemplo, projectDir/app/gradle.properties). Essa mudança reflete o novo comportamento do Gradle e é compatível com o armazenamento em cache da configuração (links em inglês).

Para ver mais informações sobre como definir valores em arquivos gradle.properties, consulte os documentos do Gradle (em inglês).

Versão 8 da linguagem Java como padrão

A partir da versão 4.2, o AGP usará o nível de linguagem Java 8 por padrão. O Java 8 oferece acesso a diversos recursos de linguagem mais recentes, incluindo expressões lambda, referências de método e métodos de interface estática. Para ver a lista completa de recursos compatíveis, consulte a documentação do Java 8.

Para manter o comportamento antigo, especifique o Java 7 explicitamente no arquivo build.gradle.kts ou build.gradle do módulo:

Kotlin

// build.gradle.kts

android {
  ...
  compileOptions {
    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}

Groovy

// build.gradle

android {
  ...
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
  }
  // For Kotlin projects, compile to Java 6 instead of 7
  kotlinOptions {
    jvmTarget = "1.6"
  }
}

Novo compilador de recursos da JVM

Um novo compilador de recursos da JVM na ferramenta do Plug-in do Android para Gradle 4.2 substitui partes do compilador de recursos AAAPT2, possivelmente melhorando o desempenho do build, especialmente em máquinas Windows.

Começando com a versão Canary 7, o novo compilador de recursos do JVM é ativado por padrão.

A assinatura de v3 e v4 agora é compatível

O Plug-in do Android para Gradle 4.2 agora é compatível com os formatos de assinatura APK v3 e APK v4. Para ativar um ou ambos os formatos no seu build, adicione as seguintes propriedades ao arquivo build.gradle ou build.gradle.kts no nível do módulo:

Kotlin

// build.gradle.kts

android {
   ...
   signingConfigs {
      config {
          ...
          enableV3Signing(true)
          enableV4Signing(true)
      }
   }
}

Groovy

// build.gradle

android {
  ...
  signingConfigs {
    config {
        ...
        enableV3Signing true
        enableV4Signing true
    }
  }
}

A assinatura do APK v4 permite implantar rapidamente APKs grandes usando a instalação do APK incremental do ADB no Android 11. Essa nova sinalização cuida da etapa de assinatura do APK no processo de implantação.

Implantar em vários dispositivos

Para ajudar a simplificar o teste de apps em dispositivos e níveis de API diferentes, agora você pode implantar o app em vários dispositivos ou emuladores simultaneamente seguindo estas etapas:

  1. Escolha Select Multiple Devices no menu suspenso de dispositivo de destino (na parte central superior do ambiente de desenvolvimento integrado).

    Lista suspensa de dispositivo de destino

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

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

  3. Execute seu app ou os testes.

Apply Changes

Para aumentar a produtividade durante a iteração no seu app, fizemos as seguintes melhorias em "Apply Changes" para dispositivos que executam o Android 11 ou mais recente:

Compatibilidade com outras alterações de código

Para dispositivos com Android 11 ou versões mais recentes, agora você pode adicionar campos primitivos finais estáticos e implantar essas mudanças no app em execução ao clicar em Apply Code Changes ou Apply Changes and Restart Activity .

Agora você também pode adicionar recursos e implantar essas mudanças no seu app em execução nos dispositivos Android 11 clicando em Apply Changes and Restart Activity .

Suspensão do uso da variável de ambiente ANDROID_SDK_HOME

A variável de ambiente ANDROID_SDK_HOME teve o uso suspenso e foi substituída por ANDROID_PREFS_ROOT. Para ver mais informações, consulte Variáveis de ambiente do emulador.

Problemas conhecidos na visualização da versão 4.2

Esta seção descreve os problemas conhecidos na visualização do Android Studio 4.2.

Exceções de Lint em projetos Kotlin

Os projetos Kotlin que definem checkDependencies=true podem encontrar exceções de ponteiro nulo ou o seguinte erro:

Lint error: package fragment is not found for module

Para ver possíveis soluções alternativas, consulte Exceções de Lint em projetos Kotlin.

Native Memory Profiler: criação de perfil durante a inicialização do app desativada

A criação de perfil de memória nativa na inicialização do app está desativada. Essa opção será ativada em uma versão futura.

Como solução alternativa, você pode usar o Perfetto, um criador de perfil autônomo de linha de comando (link em inglês), para capturar perfis de inicialização.

O Studio não inicia após a instalação do Canary 8

Depois de fazer upgrade do Android Studio para a versão 4.2 Canary 8, o ambiente de desenvolvimento integrado pode não iniciar para determinados usuários que definiram opções de VM personalizadas no arquivo .vmoptions. Para contornar esse problema, recomendamos que você comente opções personalizadas em .vmoptions usando o caractere "#". O arquivo .vmoptions pode ser encontrado nos seguintes locais:

Windows

C:\Users\YourUserName\AppData\[Local|Roaming]\Google\AndroidStudioPreview4.2\studio64.exe.vmoptions

macOS

~/Library/Application Support/Google/AndroidStudioPreview4.2/studio.vmoptions

Linux

~/.config/Google/AndroidStudioPreview4.2/studio64.vmoptions