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árias novas 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 conferir uma lista de bugs corrigidos no AGP 8.0.2, consulte a 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

Alteração interruptiva: namespace necessário no script de build do módulo

Defina o namespace no arquivo build.gradle.kts do módulo em vez do arquivo de manifesto. Comece a usar a propriedade DSL namespace. começando com o AGP 7.3. Para saber mais, consulte Defina um namespace.

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

  • As versões anteriores do AGP inferem o namespace de teste do namespace principal. ID do aplicativo, incorreto em alguns casos. O Assistente de upgrade do AGP bloqueia fazer upgrade se descobrir que o namespace principal e de teste do seu projeto estão a mesma coisa. Se o upgrade estiver bloqueado, você vai precisar mudar testNamespace manualmente e modificar seu código-fonte de forma adequada.
  • Depois de mudar o namespace do teste, é possível que o código seja compilado. mas os testes instrumentados falham no momento da execução. Isso pode acontecer se o código-fonte de um teste instrumentado referencia um recurso definido nas androidTest e origens de apps.

Para mais informações, consulte Comentário do problema 191813691 19.

Alterações interruptivas: valores padrão da opção de build

A partir do AGP 8.0, os valores padrão dessas flags foram alterados para a melhorar o desempenho do build. Para obter ajuda para ajustar seu código para suportar alguns dos essas mudanças, use o Assistente de upgrade do AGP (Tools > AGP Upgrade Assistant). O Assistente de upgrade vai orientar você atualizar o código para acomodar o novo comportamento ou definir sinalizações 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. Você precisa para especificar essa opção usando a DSL nos projetos em que ela for necessária.
android.defaults.buildfeatures.aidl false true Por padrão, o AGP 8.0 não ativa o suporte à AIDL. Você precisa especificar essa opção usando a DSL nos projetos em que ela for necessária. Essa sinalização é será removida no AGP 9.0.
android.defaults.buildfeatures.renderscript false true Por padrão, o AGP 8.0 não ativa o suporte ao RenderScript. Você precisa especificar essa opção usando a DSL nos projetos em que ela for necessária. Isso flag será removida no AGP 9.0.
android.nonFinalResIds true false O AGP 8.0 gera classes R com campos não finais ao padrão.
android.nonTransitiveRClass true false O AGP 8.0 gera classes R para recursos definidos em apenas no módulo atual.
android.enableR8.fullMode true false O AGP 8.0 ativa o modo completo do R8 por padrão. Para mais detalhes, consulte Modo completo do R8.

Alterações interruptivas: valores de opção de build aplicados

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

Sinalização Valor aplicado Observações
android.dependencyResolutionAtConfigurationTime.warn true O AGP 8.0 emite um aviso se detecta a resolução da configuração durante da fase de configuração porque afeta negativamente a configuração do Gradle vezes.
android.r8.failOnMissingClasses true O AGP 8.0 falha em builds que usam o R8 se houver classes ausentes para e garantir uma melhor otimização do DEX. Para resolver isso, você precisa adicionar o bibliotecas ausentes ou -dontwarn regras keep. Para mais detalhes, ver Avisos de classe ausentes no redutor R8.
android.testConfig.useRelativePath true Quando há compatibilidade com o uso de recursos, ativos e manifestos do Android em testes de unidade forem ativados, o AGP 8.0 vai gerar uma O arquivo test_config.properties que contém apenas dados relativos caminhos de rede. Isso garante que os testes de unidade do Android sempre possam usar a API Gradle cache de build.
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 Os perfis de referência agora são sempre gerados. Consulte Perfis de referência para saber mais.
android.enableNewResourceShrinker true Usar a nova implementação do redutor de recursos por padrão. A nova o redutor de recursos inclui suporte para recursos dinâmicos.
android.enableSourceSetPathsMap true Usado para computar mapeamentos de caminho de recurso relativo, de modo que o Gradle cria são 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 rastreia arquivos de recursos em relação ao local do projeto. Requer android.enableSourceSetPathsMap para ativar.
android.disableAutomaticComponentCreation true O AGP 8.0 não cria SoftwareComponent por padrão. Em vez disso, o AGP cria SoftwareComponents somente para variantes configuradas para publicação 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 da SettingsExtension Para saber mais, consulte a documentação do plug-in de configurações.

Para visualizar as sinalizações experimentais, consulte a notas da versão de pré-lançamento.

Atribuição de propriedade lenta do Kotlin sem suporte

Se você estiver usando a DSL do Kotlin do Gradle para seus scripts de build, observe que o Android O 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 a notas da versão e documentação.

Categorias de tarefas do Build Analyzer

No 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 usar o AGP 8.0 ou mais recente, em vez de mostrar as tarefas individualmente, o Build Analyzer as agrupa por categoria. Por exemplo, tarefas específicas para recursos do Android, Kotlin ou Dexing. são agrupados e classificados por duração. Isso facilita saber qual categoria tem mais impacto no tempo de compilação. Expanda cada categoria exibe uma lista das tarefas correspondentes. Para exibir as tarefas individualmente, sem agrupar, 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. Com o plug-in de configurações, você centraliza configurações globais, ou seja, configurações que se aplicam a todos os módulos, em para não precisar copiar e colar as configurações em vários módulos. Além disso, você pode usar o plug-in de configurações para criar ferramentas perfis de execução ou instruções diferentes sobre como executar uma ferramenta; 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 na classe arquivo settings.gradle. Veja um exemplo:

android {
  compileSdk 31
  minSdk 28
  ...
}

Perfis de execução de ferramentas

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

Crie perfis de execução e defina o perfil de execução padrão no 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 o android.experimental.settings.executionProfile na Arquivo gradle.properties:

android.experimental.settings.executionProfile=high

Também é possível definir essa propriedade usando a linha de comando, que permite configurar fluxos de trabalho diferentes. Por exemplo, se você tem um fluxo de trabalho de integração contínua é possível usar a linha de comando para alterar o perfil de execução sem precisar mude 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 é obrigatório para executar o Gradle. O Android Studio Flamingo inclui o JDK 17 e configura o Gradle para por padrão, o que significa que a maioria dos usuários do Android Studio não precisa fazer todas as mudanças de configuração nos projetos.

Se você precisar definir manualmente a versão do JDK, usado pelo AGP no Android Studio, é necessário usar o JDK 17 ou mais recente.

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