Plug-in do Android para Gradle 8.2.0 (novembro de 2023)

O Plug-in do Android para Gradle 8.2.0 é uma versão principal que inclui vários novos recursos e melhorias.

Compatibilidade

O nível máximo da API que o Plug-in do Android para Gradle 8.2 oferece suporte é o nível 34. Confira outras informações de compatibilidade:

Versão mínima Versão padrão Observações
Gradle 8.2 8.2 Para saber mais, consulte Como atualizar o Gradle.
Ferramentas de build do SDK 34.0.0 34.0.0 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.

Nova macro para especificar o caminho do JDK

A #GRADLE_LOCAL_JAVA_HOME é uma nova macro que pode ser usada para especificar o caminho do JDK. Com ela, é mais fácil e seguro especificar o caminho inicial do Java usado para a execução do daemon Gradle (processo em segundo plano) para seu projeto. A seleção de caminho é armazenada no campo java.home no arquivo .gradle/config.properties. Defina esse campo nas configurações do Gradle JDK no Android Studio: File (ou Android Studio no macOS) > Settings > Build, Execution, Deployment > Build Tools > Gradle.

Novos projetos vão usar #GRADLE_LOCAL_JAVA_HOME por padrão. Os projetos atuais serão migrados automaticamente para a nova macro após uma sincronização bem-sucedida, a menos que você já esteja usando uma macro como #JAVA_HOME.

Os principais benefícios da nova macro são os seguintes:

  • É possível modificar manualmente o caminho do JDK para acionar a sincronização sem precisar abrir o projeto primeiro.
  • Menos erros relacionados a versões incompatíveis do Gradle e do projeto JDK, já que há uma única fonte de verdade para a seleção do JDK do Gradle.

Problemas corrigidos

Plug-in do Android para Gradle 8.2.0

Problemas corrigidos
Plug-in do Android para Gradle
Os tipos de origem personalizados deveriam criar conjuntos de origem com diversas variações
A verificação de versão do SDK não processa usuários de extensões dessa ferramenta
O DependenciesInfoBuilder precisa de uma atualização de API e um documento.
O DexingNoClasspathTransform (minSdk >= 24) com o destino Java 11 falha devido à ausência de membros aninhados.
O DslExtension.Builder.extendProjectWith() não funciona conforme descrito no Groovy.
Foi adicionada a nova API VariantSelector.withFlavor que não usa o kotlin.Pair.
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) tem uma ausência no cache porque o arquivo "proguard.txt" foi modificado.
O manifesto integrado do app contém os atributos extractNativeLibs e useEmbeddedDex das dependências
A AIDL falha com build-tools 33.0.0
AGP: exposição do caminho para a ferramenta AIDL e o arquivo AIDL do framework como API pública.
Pedido: permita que o ambiente de desenvolvimento integrado ofereça uma correção para "PermittedSubclasses requires ASM9"
Bytecode de destino 17 ao compilar com o AGP
VariantManager.getModifiedName foi removido
AndroidTest.packaging.jniLibs.keepDebugSymbols não afeta o empacotamento de androidTest
As tarefas de teste de instrumentação do GMD travam e, após uma nova tentativa, começam a falhar
generateLocaleConfig no agp 8.1.0 usa ordenação não determinística, interrompendo builds reproduzíveis
ProcessApplicationManifest.navigationJsons tem arquivos com caminhos absolutos
O acesso ao GradleBuildProject.Builder pelo AnalyticsConfiguratorService não é permitido depois que o AnalyticsService é criado
AndroidTest.packaging.jniLibs.keepDebugSymbols não afeta o empacotamento de androidTest
Compilação permitida para valores de cor ilegais
"ReplaceWith" incorreto para VariantBuilder
O Gradle 8.1 interrompe o armazenamento em cache da configuração devido a .gradle/.android/analytics.settings
As mensagens de descontinuação não usam "ReplaceWith"
Foi exposta uma maneira de acessar a versão padrão do NDK
O Plug-in do Android para Gradle requer o Java 17 para funcionar.
Incompatibilidade de transformação ASM e toAppend()
Correção de LintErrors ao executar o lint com o UAST do K2 via Gradle em um projeto KMP
Suporte ao nível de variante missingDimensionStrategy e, possivelmente, ao tipo de build/variação matchingFallback
"android.injected.studio.version" foi removido do Android Studio Giraffe
Foi adicionada a capacidade de desativar o AndroidXDependencyCheck
generateLocaleConfig no agp 8.1.0 usa ordenação não determinística, interrompendo builds reproduzíveis
Os requisitos da versão R8/D8 são anunciados nos metadados de AAR (por exemplo, para coreLibraryDesugaring e a nova API de forma incompleta)
Aviso de sincronização: "GradleBuildProject.Builder não pode ser acessado usando o AnalyticsConfiguratorService depois que o AnalyticsService é criado"
Atualização para o marco ou RC do Gradle 8.2
Não é possível acessar "java.lang.Comparable"
O androidResources não está disponível no módulo da biblioteca Android.
Falha na execução da tarefa ":app:mergeReleaseClasses" após atualizar o AGP da versão 8.0.2 para a 8.1.0.
O Gradle 8.1 interrompe o armazenamento em cache da configuração devido a .gradle/.android/analytics.settings
[AGP 8.1.0] O teste ./gradlew falha com a mensagem "Unable to find manifest output" (Não foi possível encontrar a saída do manifesto) quando splits.abi.isEnable e testOptions.unitTests.isIncludeAndroidResources são verdadeiros.
O Android Studio Giraffe não respeita o versionCodeOverride com o AGP 8.1.
O AGP 8.1.0 desinstala o app depois de executar testes de instrumentação. A versão 7.4.2 não faz isso.
A transformação de um APK causa um erro com o ListingFileRedirectTask.
REGRESSÃO DE HEDGEHOG: o botão "Executar" atrasa alguns segundos (criando especificação).
Dexer (D8)
Ativar classes de registro nativo e seladas durante a dexação para min-api 34 e versões mais recentes.
Lint
A verificação de lint instanciada não funciona bem com AppComponentFactory
Os alfas do Lint 8.2.0 ainda não têm suporte a importações de função de nível superior no Kotlin
Foi adicionada uma opção para não incluir números de linha e coluna no valor de referência do lint
Foi adicionada uma opção para não incluir números de linha e coluna no valor de referência do lint
Os testes de lint não têm suporte a recursos da linguagem Java 17
Bumblebee 2021.1.1 Patch 1 alega que uma versão antiga (20030203.000550) do commons-io é mais recente que 2.11.0.
Os alfas do Lint 8.2.0 ainda não têm suporte a importações de função de nível superior no Kotlin
Bumblebee 2021.1.1 Patch 1 alega que uma versão antiga (20030203.000550) do commons-io é mais recente que 2.11.0.
O Android Studio marca incorretamente a versão especificada como desatualizada.
O lint ignora o problema UseValueOf ao usar o UAST do K2
Problemas inesperados de outro projeto são sinalizados pelo Android Lint.
O Android Lint falha em uma biblioteca KMP com a mensagem "A propriedade 'variantInputs.name' não tem um valor configurado".
Integração com o Lint
Erro de lint de DuplicatePlatformClasses da dependência testImplementation.
Redutor (R8)
java.lang.VerifyError: classe do verificador recusada.
O build trava em :minifyReleaseWithR8 ao usar a biblioteca Apache POI.
O Kotlin 1.9 faz com que as lambdas do Kotlin sejam destruídas pelo R8 se as verificações de valores nulos forem removidas.

Plug-in do Android para Gradle 8.2.1

Problemas corrigidos
Plug-in do Android para Gradle
Não executar a tarefa de dexação nas classes de subprojetos quando elas já tiverem sido dexados pelas transformações de artefato.
Falha do Plug-in do Android para Gradle com JavaVersion.VERSION_11 e OpenJDK 21 ea
Dexer (D8)
Registros de simplificação de leitura para o Android U
Redutor (R8)
O R8 gera um dex corrompido, resultando em exceção de transmissão de classe durante a execução
R8 causando uma mudança na interface inacessível
Falha no SDK do Flurry do R8 com o AGP 8.2.0.
Android: o R8 faz com que a subclasse de LinearLayoutManager falhe.
ClassCastException no R8 quando o reempacotamento está ativado e a redução, a ofuscação e a otimização estão desativadas.
R8 travado em BridgeAnalyzer.analyzeMethod
O R8 v8.2.33 falha no ambiente de execução "java.lang.VerifyError: Bad type on operand stack" após o upgrade.

Plug-in do Android para Gradle 8.2.2

Problemas corrigidos
Plug-in do Android para Gradle
Não foi possível definir a versão do JaCoCo no AGP 8.2.0.
Dexer (D8)
[Biblioteca simplificada] A versão 2.1 da biblioteca simplificada não é compatível com versões anteriores do R8.
Otimizações são executadas mesmo tendo apenas o D8.
Redutor (R8)
[R8 8.3.21] O R8 8.3.21 tem 1,57 MB a mais que o R8 8.1.56.
O class.getInterfaces() retorna vazio.