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
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 ver 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 interruptiva: namespace necessário no script de build do módulo
Você precisa definir 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:
- Em alguns casos, as versões anteriores do AGP inferem o namespace de teste do namespace principal ou
do ID do aplicativo incorretamente. O Assistente de upgrade do AGP bloqueará o
upgrade se descobrir que o namespace principal e o namespace de teste do projeto são
os mesmos. Se o upgrade for bloqueado, você precisará mudar manualmente o
testNamespace
e modificar seu 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 fontes
androidTest
e do app.
Para saber mais, consulte o problema 191813691 comentário 19.
Mudanças interruptivas: valores padrão da opção de build
A partir do AGP 8.0, os valores padrão dessas flags foram mudados para melhorar o desempenho do build. Se quiser ajuda para ajustar seu código e 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 na configuraçã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. É 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 para o 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 saber mais, consulte Modo completo do R8. |
Mudanças interruptivas: valores de opções de build aplicados
A partir do AGP 8.0, não é mais possível mudar os valores dessas flags. Se
você especificar esses itens 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 a resolução da 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 há classes ausentes para
garantir uma melhor otimização do DEX. Para resolver isso, adicione as
bibliotecas ausentes ou as regras keep -dontwarn . Para saber mais,
consulte
Avisos de classes ausentes no redutor R8. |
android.testConfig.useRelativePath |
true |
Quando o suporte ao uso de recursos 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 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 |
Agora os perfis de referência serão sempre gerados Consulte Perfis de referência para saber 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 caminho de recursos relativos. Assim, os builds do Gradle ficam 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
monitora os arquivos de recursos em relação ao local do projeto. É necessário ativar a
android.enableSourceSetPathsMap . |
android.disableAutomaticComponentCreation |
true |
Por padrão, o AGP 8.0 não cria nenhum SoftwareComponent. 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 sinalização para
substituir o perfil de execução padrão de
SettingsExtension
.
Para saber mais, consulte a documentação do plug-in de configurações.
Para ter acesso a uma prévia das flags experimentais, consulte as notas da versão de pré-lançamento.
A atribuição lenta de propriedade do Kotlin não tem suporte
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 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 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. Isso facilita saber qual categoria tem mais impacto no tempo de build. A expansão de cada categoria exibe uma lista das tarefas correspondentes. Para exibir tarefas individualmente, sem agrupamento, use o menu suspenso Agrupar por.
Novo plug-in de configurações
O AGP 8.0.0-alpha09 introduz 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, 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 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 ferramenta
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 de JVM para uma ferramenta e configurá-la para execução em um processo separado. Atualmente, 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 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 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 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.