O Plug-in do Android para Gradle 8.0.0 é uma versão principal que inclui uma variedade de 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 conferir 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 que interrompe o serviço: namespace obrigatório no script de build do módulo
É necessário definir o namespace no arquivo build.gradle.kts
do módulo, em vez
do arquivo de manifesto. Você pode começar a usar a propriedade DSL namespace
a partir da 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 de forma incorreta em alguns casos. O assistente de upgrade do AGP bloqueia o
upgrade se ele detectar que o namespace principal e de teste do projeto são
iguais. Se o upgrade for bloqueado, você vai precisar mudar
testNamespace
manualmente e modificar o 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
androidTest
e nas origens do app.
Para mais informações, consulte o comentário 19 do problema 191813691.
Mudanças importantes: valores padrão da opção de build
A partir do AGP 8.0, os valores padrão dessas flags foram alterados para melhorar o desempenho do build. Para receber ajuda com a adaptação do código para 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 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 o DSL nos projetos em que você precisa. |
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 o DSL nos projetos em que você precisa. 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 o DSL nos projetos em que você precisa. 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 R8 completo. |
Mudanças importantes: valores de opção de build obrigatórios
A partir do AGP 8.0, não é mais possível mudar os valores dessas flags. Se
você especificar esses valores no arquivo gradle.properties
, o valor será ignorado e o AGP
imprimirá avisos.
Sinalização | Valor obrigatório | Observações |
---|---|---|
android.dependencyResolutionAtConfigurationTime.warn |
true |
O AGP 8.0 emite um aviso se detectar a 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 ausentes ou as regras de manutenção -dontwarn . Para mais detalhes,
consulte
Avisos de classes ausentes no redutor R8. |
android.testConfig.useRelativePath |
true |
Quando o suporte ao uso de recursos, assets 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 é 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 |
Use a nova implementação de redução de recursos por padrão. O novo compressor de recursos inclui suporte a recursos dinâmicos. |
android.enableSourceSetPathsMap |
true |
Usado para computar mapeamentos de caminho de recurso relativo, para que os builds do Gradle sejam 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
android.enableSourceSetPathsMap ativado. |
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 serem publicadas 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 propriedades preguiçosas do Kotlin.
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 experimental de propriedades 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 usar o AGP 8.0 ou mais recente, em vez de mostrar tarefas individualmente, o Build Analyzer vai agrupá-las 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 mostra uma lista das tarefas correspondentes. Para mostrar as tarefas individualmente, sem agrupar, 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 configurações globais (configurações 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 diferentes instruções 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 as configurações globais
Para configurar 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. Você pode 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 execução em um processo separado. No momento, só há suporte para a ferramenta R8.
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 mudar o perfil de execução sem precisar
mudar o arquivo settings.gradle
:
./gradlew assembleRelease \
-Pandroid.experimental.settings.executionProfile=ci
O 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.
Problemas corrigidos
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) |
|
Plug-in do Android para Gradle 8.0.1
Problemas corrigidos | ||||
---|---|---|---|---|
Redutor (R8) |
|
Plug-in do Android para Gradle 8.0.2
Problemas corrigidos | |||||
---|---|---|---|---|---|
Redutor (R8) |
|