Cronograma de migração da DSL/API do Plug-in do Android para Gradle

O Plug-in do Android para Gradle (AGP, na sigla em inglês) é o sistema de compilação compatível com apps Android e inclui compatibilidade para compilar vários tipos diferentes de fontes e vinculá-las em um aplicativo que pode ser executado em um dispositivo Android físico ou um emulador.

A seção a seguir descreve a evolução planejada da DSL e da API do AGP. À medida que novas APIs forem introduzidas em versões estáveis, as APIs antigas serão marcadas como suspensas. Essas APIs suspensas ficarão indisponíveis na próxima versão estável. Veja abaixo informações sobre as próximas mudanças em cada versão principal do AGP.

AGP 7.0 (primeiro semestre de 2021)

Novas APIs Variant estão estáveis e as APIs antigas foram suspensas

  • As APIs Variant (link em inglês) que estavam em desenvolvimento nas versões 4.1 e 4.2 estão estáveis.
  • Todas essas interfaces estão localizadas no artefato gradle-api.
  • As interfaces e classes anteriores usadas na antiga API Variant foram suspensas.

AGP 7.1 (segundo semestre de 2021)

Novas interfaces DSL estão estáveis e as antigas foram suspensas

  • As interfaces DSL que estavam em desenvolvimento nas versões 4.1, 4.2 e 7.0 agora estão estáveis.
  • Todas essas interfaces estão localizadas no artefato gradle-api.
  • As interfaces e classes usadas anteriormente na DSL foram suspensas.

Ao desenvolver plug-ins, agora é recomendável depender apenas do artefato gradle-api para usar apenas as novas interfaces e classes. Uma pequena exceção são as classes de plug-in que serão movidas para o artefato gradle-api na versão 8.0:

Classes AGP internas particulares ainda acessíveis

As classes internas particulares do AGP, localizadas em outros artefatos, ainda podem ser acessadas durante a compilação de arquivos de build, mas não é recomendado usá-las porque elas podem mudar de maneiras inesperadas a qualquer momento.

AGP 8.0 (primeiro semestre de 2022)

APIs antigas foram removidas

  • Todas as interfaces e classes anteriores usadas no DSL e na antiga API Variant foram excluídas.
  • O artefato gradle-api é o único artefato necessário para acessar as interfaces e classes de DSL e de APIs variantes, e é necessário usá-lo ao desenvolver plug-ins.
  • Usando metadados do Gradle, que oferece diferentes gráficos de dependência para compilação e para tempo de execução, somente o artefato gradle-api está disponível durante a compilação dos arquivos de build.

Classes AGP internas particulares ainda acessíveis

Ainda é possível depender manualmente de um artefato que usa classes internas particulares do AGP no caminho de classe de compilação (para plug-ins e arquivos de build), mas isso não é recomendado, uma vez que o acesso será removido na versão 9.0.

AGP 9.0 (primeiro semestre de 2023)

O acesso às classes internas particulares do AGP foi removido

Depender do artefato gradle agora ocultará todas as classes internas e fornecerá acesso de compilação apenas às interfaces e classes disponíveis no artefato gradle-api. Isso afeta a compilação do plug-in e do arquivo de build.

Não é possível adicionar manualmente uma dependência para ter acesso às classes internas.