Esta página contém as notas da versão para prévias do Plug-in do Android para Gradle (AGP, na sigla em inglês).
Plug-in do Android para Gradle 9.0
O Plug-in do Android para Gradle 9.0 é uma nova versão principal da AGP que traz mudanças de API e comportamento.
Para atualizar para o Plug-in do Android para Gradle 9.0.0-alpha04, use o Assistente de upgrade do Plug-in do Android para Gradle no Android Studio Narwhal 4 Feature Drop | 2025.1.4.
O assistente de upgrade do AGP ajuda a preservar os comportamentos atuais ao fazer upgrade do projeto quando apropriado. Assim, é possível fazer upgrade do projeto para usar o AGP 9.0, mesmo que você não esteja pronto para adotar todos os novos padrões do AGP 9.0.
Compatibilidade
O nível máximo da API Android compatível com o Plug-in do Android para Gradle 9.0.0-alpha04 é o nível 36.
O plug-in do Android para Gradle 9.0.0-alpha04 exige o Gradle 9.0.0.
Versão mínima | Versão padrão | Observações | |
---|---|---|---|
Gradle | 9.0.0 | 9.0.0 | Para saber mais, consulte Como atualizar o Gradle. |
Ferramentas de build do SDK | 36.0.0 | 36.0.0 | Instale ou configure as Ferramentas de build do SDK. |
NDK | N/A | 28.2.13676358 | Instale ou configure uma versão diferente do NDK. |
JDK | 17 | 17 | Para saber mais, consulte Como configurar a versão do JDK. |
As implementações internas de DSL e a API de variantes descontinuada agora exigem ativação explícita
O Plug-in do Android para Gradle agora tem uma superfície de API definida, com APIs compatíveis
definidas no artefato do Maven com.android.tools.build:gradle-api
.
Para compatibilidade com plug-ins binários e scripts de build atuais, as implementações
anteriores da DSL que antecedem a superfície da API definida ainda eram expostas
por padrão no AGP 8.13 e versões anteriores. Isso permite que o código em plug-ins do Gradle e scripts de build acesse detalhes de implementação interna da DSL, bem como as APIs android.applicationVariants
, android.libraryVariants
, android.testVariants
e android.unitTestVariants
descontinuadas, que serão removidas em 2026 no AGP 10.
Para tornar essa transição mais visível, a API de variante legada e a DSL interna não estão acessíveis por padrão no Plug-in do Android para Gradle 9.0.0-alpha04.
É possível ativar novamente o uso da API descontinuada definindo
android.newDsl=false
em gradle.properties
.
Durante a série alfa 9.0, vamos entrar em contato com os autores de plug-ins para ajudar na adaptação e no lançamento de plug-ins totalmente compatíveis com os novos modos. Além disso, vamos aprimorar o Assistente de upgrade do AGP no Android Studio para orientar você durante a migração.
Kotlin integrado
O Plug-in do Android para Gradle 9 inclui suporte integrado para compilar Kotlin, substituindo o plug-in do Kotlin aplicado separadamente. Isso simplifica a integração com o AGP, evitando o uso das APIs descontinuadas e melhorando o desempenho em alguns casos.
O Plug-in do Android para Gradle 9 tem uma dependência de tempo de execução do plug-in Kotlin para Gradle 2.2.0, que é a versão mínima necessária para a compatibilidade integrada com Kotlin.
É possível desativar o Kotlin integrado definindo
android.builtInKotlin=false
.
Se você desativou a opção e também precisa usar uma versão mais antiga do plug-in do Gradle
do Kotlin, force o downgrade.
buildscript {
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
version { strictly("2.0.0") } // or another version that you want to use
}
}
}
Mudanças de comportamento
O Plug-in do Android para Gradle 9.0 tem os seguintes novos comportamentos:
Comportamento | Recomendação |
---|---|
O Plug-in do Android para Gradle 9.0 usa a versão r28c do NDK por padrão.
|
Considere especificar explicitamente a versão do NDK que você quer usar. |
Por padrão, o Plug-in do Android para Gradle 9.0 exige que os consumidores de uma biblioteca usem a mesma versão ou uma versão mais recente do SDK de compilação. |
Use o mesmo SDK de compilação ou uma versão mais recente ao consumir uma biblioteca.
Se isso não for possível ou se você quiser dar mais tempo para os consumidores de uma biblioteca que
você publica fazerem a troca, defina
AarMetadata.minCompileSdk
explicitamente.
|
A AGP 9.0 inclui atualizações nos padrões das seguintes propriedades do Gradle. Assim, você pode preservar o comportamento do AGP 8.13 ao fazer upgrade:
Propriedade | Função | Mudança do AGP 8.13 para o AGP 9.0 | Recomendação |
---|---|---|---|
android.newDsl |
Use as novas interfaces DSL sem expor as implementações legadas do bloco
android .Isso também significa que a API Variant legada, como android.applicationVariants
não está mais acessível.
|
false → true |
Para desativar, defina
android.newDsl=false .Quando todos os plug-ins e a lógica de build usados no projeto forem compatíveis, remova a recusa. |
android.builtInKotlin |
Ativamos o suporte para compilar código Kotlin diretamente no plug-in do Android
Gradle, sem o plug-in
org.jetbrains.kotlin.android .
|
false → true |
Adote o Kotlin integrado removendo o uso do
plug-in org.jetbrains.kotlin.android , se possível.
Caso contrário, desative a opção definindo android.builtInKotlin=false .
|
android.uniquePackageNames |
Garante que cada biblioteca tenha um nome de pacote diferente. | false → true |
Especifique nomes de pacotes exclusivos para todas as bibliotecas no projeto. Se isso não for possível, desative a flag durante a migração. |
android.dependency.useConstraints |
Controla o uso de restrições de dependência entre configurações. O padrão no AGP 9.0 é false , que usa apenas restrições em testes de dispositivos de aplicativos (AndroidTest).
Definir como true vai reverter para o comportamento da versão 8.13.
|
true → false |
Não use restrições de dependência em todos os lugares, a menos que seja necessário. Aceitar o novo padrão dessa flag também ativa otimizações no processo de importação de projetos, o que reduz o tempo de importação para builds com muitos subprojetos de biblioteca Android. |
aandroid.enableAppCompileTimeRClass |
Compile o código em aplicativos com uma classe R não final, alinhando a compilação do aplicativo com a da biblioteca. Isso melhora a incrementalidade e abre caminho para futuras otimizações de performance no fluxo de processamento de recursos. |
false → true |
Muitos projetos podem adotar o novo comportamento sem mudanças na origem. Se os campos da classe R forem usados em qualquer lugar que exija uma constante, como casos de troca, refatore para usar instruções if encadeadas. |
android.sdk.defaultTargetSdkToCompileSdkIfUnset |
Usa a versão do SDK de compilação como o valor padrão para a versão do SDK de destino
em apps e testes. Antes dessa mudança, a versão do SDK de destino era definida como padrão para a versão mínima do SDK. |
false → true |
Especifique explicitamente a versão do SDK de destino para apps e testes. |
android.onlyEnableUnitTestForTheTestedBuildType |
Cria apenas componentes de teste de unidade para o tipo de build testado. No projeto padrão, isso resulta em um único teste de unidade para depuração, enquanto o comportamento anterior era executar testes de unidade para depuração ou lançamento. |
false → true |
Se o projeto não exigir que os testes sejam executados para depuração e lançamento, não é necessário fazer mudanças. |
android.proguard.failOnMissingFiles |
Falha no build com um erro se algum dos arquivos de manutenção especificados na DSL do AGP não existir no disco. Antes dessa mudança, erros de digitação em nomes de arquivos faziam com que os arquivos fossem ignorados silenciosamente. | false → true |
Remover declarações inválidas de arquivos ProGuard |
android.r8.optimizedResourceShrinking |
Permite que o R8 mantenha menos recursos do Android considerando classes e recursos do Android juntos. | false → true |
Se as regras de retenção do projeto já estiverem completas, não será necessário fazer mudanças. |
android.r8.strictFullModeForKeepRules |
Permite que o R8 mantenha menos ao não manter implicitamente o construtor padrão
quando uma classe é mantida.
Ou seja, -keep class A não implica mais -keep class A { <init>(); } |
false → true |
Se as regras de retenção do projeto já estiverem completas, não será necessário fazer mudanças.
Substitua -keep class A
por
-keep class A { <init>(); }
nas regras de manutenção do projeto em todos os casos em que você precisa que o construtor
padrão seja mantido.
|
android.defaults.buildfeatures.shaders |
Ativa a compilação de shader em todos os subprojetos. | true → false |
Ative a compilação de sombreadores apenas nos subprojetos que contêm sombreadores a serem compilados definindo o seguinte nos arquivos de build do Gradle desses projetos:
android { buildFeatures { shaders = true } } |
Recursos removidos
O Plug-in do Android para Gradle 9.0 remove as seguintes funcionalidades:
- Suporte a apps do Wear OS incorporados
O AGP 9.0 remove o suporte à incorporação de apps do Wear OS, que não é mais compatível com o Google Play. Isso inclui a remoção das configurações dewearApp
e da DSLAndroidSourceSet.wearAppConfigurationName
. Consulte Distribuir para Wear OS para saber como publicar seu app no Wear OS. - Tarefa de relatório
androidDependencies
esourceSets
DSL alterada
O Plug-in do Android para Gradle 9.0 tem as seguintes mudanças interruptivas na DSL:
A parametrização de
CommonExtension
foi removida.Por si só, essa é apenas uma mudança incompatível no nível da origem para ajudar a evitar futuras mudanças incompatíveis no nível da origem, mas também significa que os métodos de bloco precisam ser movidos de
CommonExtension
paraApplicationExtension
,LibraryExension
,DynamicFeatureExtension
eTestExtension
.Ao fazer upgrade do projeto para o AGP 9.0, refatore o código do plug-in do Gradle que usa esses parâmetros ou os métodos de bloqueio. Por exemplo, o plug-in a seguir é atualizado para remover o parâmetro de tipo e não depender dos métodos de bloco removidos:
AGP 8.13
val commonExtension: CommonExtension<*, *, *, *, *, *> = extensions.getByType(CommonExtension::class) commonExtension.apply { defaultConfig { minSdk { version = release(28) } } }
AGP 9.0
val commonExtension: CommonExtension = extensions.getByType(CommonExtension::class) commonExtension.apply { defaultConfig.apply { minSdk { version = release(28) } } }
Para plug-ins que têm como destino um intervalo de versões do AGP, usar o getter diretamente é compatível com versões do AGP anteriores à 9.0.
DSL removida
O Plug-in do Android para Gradle 9.0 remove:
AndroidSourceSet.jni
, porque não estava funcional.AndroidSourceSet.wearAppConfigurationName
, já que está relacionado à remoção do suporte a apps do Wear OS incorporados.BuildType.isRenderscriptDebuggable
, porque não estava funcional.ComponentBuilder.enabled
. Ele foi substituído porComponentBuilder.enable
.DependencyVariantSelection
. Ele é substituído porDependencySelection
, que é exposto comokotlin.android
Installation.installOptions(String)
. Ela foi substituída pela propriedade mutável deInstallation.installOptions
.VariantBuilder.targetSdk
etargetSdkPreview
, já que não eram significativos em bibliotecas. UseGeneratesApkBuilder.targetSdk
ouGeneratesApkBuilder.targetSdkPreview
em vez disso.O bloco experimental, mas nunca estabilizado,
PostProcessing
.ProductFlavor.setDimension
, que é substituída pela propriedadedimension
LanguageSplitOptions
, que era útil apenas para o Google Play Instant, que está descontinuado.Variant.unitTest
, já que não era aplicável ao plug-incom.android.test
.unitTest
está disponível nos subtiposVariantBuilder
que estendemHasUnitTest
.VariantBuilder.enableUnitTest
, já que não era aplicável ao plug-incom.android.test
.enableUnitTest
está disponível nos subtiposVariantBuilder
que estendemHasUnitTestBuilder
.VariantBuilder.unitTestEnabled
foi removido em favor deenableUnitTest
, que tem um nome mais consistente, nos subtiposVariantBuilder
que estendemHasUnitTestBuilder
.
Propriedades do Gradle removidas
As seguintes propriedades do Gradle foram adicionadas inicialmente como formas de desativar globalmente recursos que estavam ativados por padrão.
Esses recursos foram desativados por padrão desde o AGP 8.0 ou versões anteriores. Ative esses recursos apenas nos subprojetos que os usam para uma build mais eficiente.
Propriedade | Função | Substituição |
---|---|---|
android.defaults.buildfeatures.aidl |
Ativa a compilação AIDL em todos os subprojetos. |
Ative a compilação do AIDL apenas nos subprojetos em que há
fontes AIDL
definindo a seguinte propriedade nos arquivos de build do Gradle desses projetos:
android { buildFeatures { aidl = true } } |
android.defaults.buildfeatures.renderscript |
Ativa a compilação do RenderScript em todos os subprojetos. |
Ative a compilação do RenderScript apenas nos subprojetos em que há fontes do RenderScript
definindo a seguinte propriedade nos arquivos de build do Gradle desses projetos:
android { buildFeatures { renderScript = true } } |
APIs removidas
O Plug-in do Android para Gradle 9.0 remove:
- As APIs
BaseExtension.registerTransform
descontinuadas e desativadas, que permaneceram apenas para permitir a compilação com a versão mais recente do AGP enquanto o destino era a execução no AGP 4.2 ou versões anteriores.
Propriedades do Gradle aplicadas
O AGP 9.0 gera um erro se você definir as seguintes propriedades do Gradle.
O Assistente de upgrade do Plug-in do Android para Gradle não vai fazer upgrade de projetos para o AGP 9.0 que usam essas propriedades.
Propriedade | Função |
---|---|
android.r8.integratedResourceShrinking |
A redução de recursos agora é sempre executada como parte do R8. A implementação anterior foi removida. |