Plug-in do Android para Gradle 8.0.0 (abril de 2023)

O Plug-in do Android para Gradle 8.0.0 é uma versão principal que inclui vários novos recursos e melhorias.

Compatibilidade

Versão mínima Versão padrão Observações
Gradle 8.0 8.0 Para saber mais, consulte Como atualizar o Gradle.
Ferramentas de build do SDK 30.0.3 30.0.3 Instale ou configure as Ferramentas de build do SDK.
NDK N/A 25.1.8937393 Instale ou configure uma versão diferente do NDK.
JDK 17 17 Para saber mais, consulte Como configurar a versão do JDK.

Versões de patch

Esta é uma lista das versões de patch do Plug-in do Android para Gradle 8.0.

Plug-in do Android para Gradle 8.0.2 (maio de 2023)

Para ver uma lista de bugs corrigidos no AGP 8.0.2, consulte os problemas fechados do Android Studio 2022.2.1.

Plug-in do Android para Gradle 8.0.1 (maio de 2023)

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

Problemas corrigidos
Erro: "No VersionRequirement with the given id in the table" depois de fazer upgrade do AGP 7.2.2 para 7.4.0
R8 NullPointerException em markTypeAsLive AGP 7.4.1
[R8 4.0.53] Falha de verificação de classe rígida no Android 11

Mudança interruptiva: namespace necessário no script de build do módulo

Você precisa definir o namespace no arquivo build.gradle.kts do módulo, e não no arquivo de manifesto. Você pode começar a usar a propriedade DSL namespace a partir do AGP 7.3. Para saber mais, consulte Definir um namespace.

Ao migrar para a DSL de namespace, esteja ciente dos seguintes problemas:

  • Em alguns casos, as versões anteriores do AGP inferem o namespace de teste do namespace principal ou do ID do aplicativo incorretamente. O Assistente de upgrade do AGP bloqueará o upgrade se descobrir que o namespace principal e o namespace de teste do projeto são os mesmos. Se o upgrade for bloqueado, você precisará mudar manualmente o testNamespace e modificar seu código-fonte de acordo.
  • Depois de mudar o namespace do teste, é possível que o código seja compilado, mas os testes instrumentados falhem no momento da execução. Isso pode acontecer se o código-fonte do teste instrumentado referenciar um recurso definido nas fontes androidTest e do app.

Para saber mais, consulte o problema 191813691 comentário 19.

Mudanças interruptivas: valores padrão da opção de build

A partir do AGP 8.0, os valores padrão dessas flags foram mudados para melhorar o desempenho do build. Se quiser ajuda para ajustar seu código e oferecer suporte a algumas dessas mudanças, use o Assistente de upgrade do AGP (Tools > AGP Upgrade Assistant). O Assistente de upgrade orienta você na atualização do código para acomodar o novo comportamento ou na configuração de flags para preservar o comportamento anterior.

Sinalização Novo valor padrão Valor padrão anterior Observações
android.defaults.buildfeatures.buildconfig false true O AGP 8.0 não gera BuildConfig por padrão. É necessário especificar essa opção usando a DSL nos projetos em que ela é necessária.
android.defaults.buildfeatures.aidl false true O AGP 8.0 não ativa o suporte à AIDL por padrão. É necessário especificar essa opção usando a DSL nos projetos em que ela é necessária. Essa flag será removida no AGP 9.0.
android.defaults.buildfeatures.renderscript false true O AGP 8.0 não ativa o suporte para o RenderScript por padrão. É necessário especificar essa opção usando a DSL nos projetos em que ela é necessária. Essa flag será removida no AGP 9.0.
android.nonFinalResIds true false O AGP 8.0 gera classes R com campos não finais por padrão.
android.nonTransitiveRClass true false O AGP 8.0 gera classes R para recursos definidos apenas no módulo atual.
android.enableR8.fullMode true false O AGP 8.0 ativa o modo completo do R8 por padrão. Para saber mais, consulte Modo completo do R8.

Mudanças interruptivas: valores de opções de build aplicados

A partir do AGP 8.0, não é mais possível mudar os valores dessas flags. Se você especificar esses itens no arquivo gradle.properties, o valor será ignorado, e o AGP vai mostrar avisos.

Sinalização Valor aplicado Observações
android.dependencyResolutionAtConfigurationTime.warn true O AGP 8.0 emite um aviso se detectar a resolução da configuração durante a fase de configuração, porque isso afeta negativamente os tempos de configuração do Gradle.
android.r8.failOnMissingClasses true O AGP 8.0 falha em builds que usam o R8 se há classes ausentes para garantir uma melhor otimização do DEX. Para resolver isso, adicione as bibliotecas ausentes ou as regras keep -dontwarn. Para saber mais, consulte Avisos de classes ausentes no redutor R8.
android.testConfig.useRelativePath true Quando o suporte ao uso de recursos e manifestos Android em testes de unidade está ativado, o AGP 8.0 gera um arquivo test_config.properties que contém apenas caminhos relativos. Isso garante que os testes de unidade do Android sempre possam usar o cache de build do Gradle.
android.useNewJarCreator true O AGP usa a biblioteca Zipflinger ao criar arquivos JAR para melhorar o desempenho do build.
android.bundletool.includeRepositoriesInDependencyReport true Quando a adição de informações de dependência do SDK em AABs e APKs está ativada, o AGP 8.0 também adiciona uma lista de repositórios de projetos a essas informações. Para saber mais, consulte Informações de dependência do Play Console.
android.enableArtProfiles true Agora os perfis de referência serão sempre gerados Consulte Perfis de referência para saber mais detalhes.
android.enableNewResourceShrinker true Usar a nova implementação do redutor de recursos por padrão. O novo redutor de recursos inclui suporte a recursos dinâmicos.
android.enableSourceSetPathsMap true Usado para calcular mapeamentos de caminho de recursos relativos. Assim, os builds do Gradle ficam atualizados com mais frequência.
android.cacheCompileLibResources true Os recursos da biblioteca compilada agora podem ser armazenados em cache por padrão, porque o Gradle monitora os arquivos de recursos em relação ao local do projeto. É necessário ativar a android.enableSourceSetPathsMap.
android.disableAutomaticComponentCreation true Por padrão, o AGP 8.0 não cria nenhum SoftwareComponent. Em vez disso, o AGP cria SoftwareComponents apenas para variantes configuradas para serem publicadas usando a DSL de publicação.

Nova flag estável para perfil de execução

O AGP inclui a nova flag android.settings.executionProfile. Use essa sinalização para substituir o perfil de execução padrão de SettingsExtension. Para saber mais, consulte a documentação do plug-in de configurações.

Para ter acesso a uma prévia das flags experimentais, consulte as notas da versão de pré-lançamento.

A atribuição lenta de propriedade do Kotlin não tem suporte

Se você estiver usando a DSL do Kotlin do Gradle para seus scripts de build, observe que o Android Studio e o AGP 8.0 não oferecem suporte à atribuição de propriedade experimental usando o operador =. Para mais informações sobre esse recurso, consulte as notas da versão e a documentação.

Categorias de tarefas do Build Analyzer

A partir do Android Studio Flamingo, o Build Analyzer tem uma nova visualização padrão para tarefas que afetam a duração do build. Se o projeto usa o AGP 8.0 ou mais recente, em vez de mostrar tarefas individualmente, o Build Analyzer as agrupa por categoria. Por exemplo, tarefas específicas para recursos do Android, Kotlin ou Dexing são agrupadas e classificadas por duração do build. Isso facilita saber qual categoria tem mais impacto no tempo de build. A expansão de cada categoria exibe uma lista das tarefas correspondentes. Para exibir tarefas individualmente, sem agrupamento, use o menu suspenso Agrupar por.

Crie categorias de tarefas do Analyzer.

Novo plug-in de configurações

O AGP 8.0.0-alpha09 introduz o novo plug-in de configurações. O plug-in de configurações permite centralizar as configurações globais, que se aplicam a todos os módulos, em um só lugar, para que você não precise copiar e colar as configurações em vários módulos. Além disso, é possível usar o plug-in de configurações para criar perfis de execução de ferramentas ou instruções diferentes sobre como executar uma ferramenta e alternar entre elas.

Para usar o plug-in de configurações, aplique-o no arquivo settings.gradle:

apply plugin 'com.android.settings'

Centralizar configurações globais

Para definir configurações globais, use o novo bloco android no arquivo settings.gradle. Veja um exemplo:

android {
  compileSdk 31
  minSdk 28
  ...
}

Perfis de execução de ferramenta

O plug-in de configurações também permite criar perfis de execução para algumas ferramentas. Um perfil de execução determina como uma ferramenta é executada. É possível selecionar diferentes perfis de execução dependendo do ambiente. Em um perfil de execução, é possível definir argumentos de JVM para uma ferramenta e configurá-la para execução em um processo separado. Atualmente, apenas a ferramenta R8 é compatível.

Crie perfis de execução e defina o perfil de execução padrão no arquivo settings.gradle, conforme mostrado no exemplo a seguir:

android {
  execution {
    profiles {
      high {
        r8 {
          jvmOptions += ["-Xms2048m", "-Xmx8192m", "-XX:+HeapDumpOnOutOfMemoryError"]
          runInSeparateProcess true
        }
      }
      low {
        r8 {
          jvmOptions += ["-Xms256m", "-Xmx2048m", "-XX:+HeapDumpOnOutOfMemoryError"]
          runInSeparateProcess true
        }
      }
      ci {
        r8.runInSeparateProcess false
      }
    }
    defaultProfile "low"
  }
}

Para substituir o perfil padrão, selecione um perfil diferente usando a propriedade android.experimental.settings.executionProfile no arquivo gradle.properties:

android.experimental.settings.executionProfile=high

Também é possível definir essa propriedade usando a linha de comando, que permite configurar diferentes fluxos de trabalho. Por exemplo, se você tiver um fluxo de trabalho de integração contínua, use a linha de comando para alterar o perfil de execução sem precisar alterar o arquivo settings.gradle:

./gradlew assembleRelease \
  -Pandroid.experimental.settings.executionProfile=ci

JDK 17 necessário para executar o AGP 8.0

Ao usar o Plug-in do Android para Gradle 8.0 para criar seu app, o JDK 17 agora é necessário para executar o Gradle. O Android Studio Flamingo inclui o JDK 17 e configura o Gradle para usá-lo por padrão. Isso significa que a maioria dos usuários do Android Studio não precisa fazer nenhuma mudança de configuração nos projetos.

Se você precisar definir a versão do JDK usada pelo AGP no Android Studio manualmente, use o JDK 17 ou mais recente.

Ao usar o AGP, independente do Android Studio, faça upgrade da versão do JDK configurando a variável de ambiente JAVA_HOME ou a opção da linha de comando -Dorg.gradle.java.home para o diretório de instalação do JDK 17.