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 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 incompatível: namespace obrigatório no script de build no nível do módulo
É preciso definir o namespace no arquivo build.gradle.kts
ao nível do módulo, e não no 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
ID do aplicativo de maneira incorreta em alguns casos. O assistente de upgrade do AGP bloqueia o
upgrade se encontrar que o namespace principal e o namespace de teste do projeto são
iguais. Se o upgrade estiver bloqueado, mude manualmente
testNamespace
e modifique o código-fonte de acordo. - Depois de mudar o namespace de teste, é possível que seu código seja compilado, mas os testes instrumentados falhem durante a execução. Isso pode acontecer se o código-fonte do teste instrumentado referenciar um recurso definido nas fontes do app e do
androidTest
.
Para mais informações, consulte o comentário 19 do problema 191813691.
Mudanças importantes: valores padrão das opções 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 Assistente de atualização orienta você na atualização do código para acomodar o novo comportamento ou na definiçã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. Você precisa
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. Você precisa 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. Você precisa 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 apenas para recursos definidos 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. |
Mudanças importantes: valores de opções de build obrigatórios
A partir do AGP 8.0, não é mais possível mudar os valores dessas flags. Se você especificá-los no arquivo gradle.properties
, o valor será ignorado e o AGP vai imprimir avisos.
Sinalização | Valor aplicado | 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 ou regras de manutenção -dontwarn ausentes. Para mais detalhes, consulte Avisos de classes ausentes no redutor R8. |
android.testConfig.useRelativePath |
true |
Quando o suporte para usar recursos, recursos e manifestos do Android em
testes de unidade é 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 da 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 |
Use a nova implementação do encolhedor de recursos por padrão. O novo redutor de recursos inclui suporte para recursos dinâmicos. |
android.enableSourceSetPathsMap |
true |
Usado para calcular mapeamentos de caminhos de recursos relativos, para que os builds do Gradle sejam atualizados com mais frequência. |
android.cacheCompileLibResources |
true |
Agora, os recursos de biblioteca compilados podem ser armazenados em cache por padrão porque o Gradle
rastreia arquivos de recursos em relação ao local do projeto. É necessário ativar o
android.enableSourceSetPathsMap . |
android.disableAutomaticComponentCreation |
true |
O AGP 8.0 não cria um 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 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 uma prévia das flags experimentais, consulte as notas da versão de prévia.
A atribuição de propriedade lazy do Kotlin não é compatível
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 propriedades experimentais 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, tarefas específicas para recursos do Android, Kotlin ou Dexing são agrupadas e classificadas por duração do build. Assim, fica fácil saber qual categoria tem mais impacto no tempo de build. Ao abrir cada categoria, uma lista das tarefas correspondentes é exibida. Para mostrar 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. Com o plug-in de configurações, é possível centralizar 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 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, você pode definir argumentos da JVM para uma ferramenta e configurá-la para ser executada em um processo separado. No momento, 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 outro 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, o que permite configurar
fluxos de trabalho diferentes. 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
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.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) |
|