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
Confira abaixo 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 correções de bugs no AGP 8.0.2, consulte os problemas resolvidos 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 obrigatório no script de build do módulo
Defina 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:
- As versões anteriores do AGP inferem o namespace de teste do namespace principal ou
do ID do aplicativo, incorretamente em alguns casos. O Assistente de upgrade do AGP vai bloquear o
upgrade se descobrir que o namespace principal e o namespace de teste do projeto são
iguais. Se o upgrade estiver bloqueado, mude manualmente
testNamespacee modifique o código-fonte de acordo. - Depois de mudar o namespace de teste, é possível que o código seja compilado, mas os testes de instrumentação falhem no tempo de execução. Isso pode acontecer se o código-fonte do teste de instrumentação fizer referência a um recurso definido nas origens do
androidTeste do app.
Para mais informações, consulte o comentário 19 do problema 191813691.
Alterações interruptivas: valores padrão da opção de build
A partir do AGP 8.0, os valores padrão dessas flags mudaram para melhorar o desempenho do build. Para receber ajuda com o ajuste do código para oferecer suporte a algumas dessas mudanças, use o Assistente de upgrade do AGP (Tools > AGP Upgrade Assistant). O Upgrade Assistant orienta você na atualização do código para acomodar o novo comportamento ou definir 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 ao 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 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ê os especificar 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 uma resolução de 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 houver classes ausentes para
garantir uma melhor otimização do DEX. Para resolver isso, adicione as
bibliotecas ou regras de manutenção do -dontwarn que estão faltando. Para mais detalhes,
consulte
Avisos de classes ausentes no redutor R8. |
android.testConfig.useRelativePath |
true |
Quando o suporte ao uso de recursos, recursos e manifestos do 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 |
Os perfis de referência agora são sempre gerados. Consulte Perfis de referência para 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 caminhos de recursos relativos, para que os builds do Gradle fiquem atualizados com mais frequência. |
android.cacheCompileLibResources |
true |
Os recursos de biblioteca compilados agora podem ser armazenados em cache por padrão, porque o Gradle
rastreia arquivos de recursos em relação ao local do projeto. Requer
a ativação de android.enableSourceSetPathsMap. |
android.disableAutomaticComponentCreation |
true |
O AGP 8.0 não cria SoftwareComponent por padrão. Em vez disso, o AGP cria SoftwareComponents apenas para variantes configuradas para publicação usando a DSL de publicação. |
Nova flag estável para o perfil de execução
O AGP inclui a nova flag android.settings.executionProfile. Use essa flag para
substituir o perfil de execução padrão do SettingsExtension. Para
saber mais, consulte a documentação do plug-in de configurações.
Para conferir as flags experimentais, consulte as notas da versão de pré-lançamento.
Não há suporte para a atribuição de propriedade lazy do Kotlin
Se você estiver usando a DSL do Kotlin do Gradle para seus scripts de build, 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 as tarefas individualmente, o Build Analyzer as agrupa por categoria. Por exemplo, as tarefas específicas de recursos do Android, Kotlin ou Dexing são agrupadas e classificadas pela duração do build. Isso ajuda a identificar qual categoria tem o maior impacto no tempo de build. Ao expandir cada categoria, uma lista das tarefas correspondentes é exibida. Para exibir as tarefas individualmente, sem agrupamento, use o menu suspenso Agrupar por.

Novo plug-in de configurações
O AGP 8.0.0-alpha09 apresenta 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. Assim, não é necessário 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 ferramentas
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 da JVM para uma ferramenta e configurá-la para ser executada em um processo separado. Somente 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
fluxos de trabalho diferentes. Por exemplo, se você tiver um fluxo de trabalho de integração contínua,
poderá usar 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 versão 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.
Problemas corrigidos
Plug-in do Android para Gradle 8.0.2
| Problemas corrigidos | |||||
|---|---|---|---|---|---|
| Redutor (R8) |
|
||||
Plug-in do Android para Gradle 8.0.1
| Problemas corrigidos | ||||
|---|---|---|---|---|
| Redutor (R8) |
|
|||
Plug-in do Android para Gradle 8.0.0
| Problemas corrigidos | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Plug-in do Android para Gradle |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Dexer (D8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Integração com o Lint |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Redutor (R8) |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||