Analisar e automatizar upgrades de dependência

Quer simplificar o gerenciamento de dependências? Adicionar algumas ferramentas aos seus processos pode acelerar as coisas e apontar áreas que podem exigir um pouco mais de atenção.

Upgrades automáticos de versões

O Android Studio destaca as versões desatualizadas da biblioteca no editor, além de correções rápidas para fazer upgrade delas. No entanto, isso exige a verificação regular de todos os arquivos de build.

Há várias ferramentas de terceiros que podem automatizar o processo, atualizando seus arquivos de build e, opcionalmente, criando uma solicitação de pull para a mudança. Elas localizam e atualizam para as versões mais recentes disponíveis de cada dependência, mas você ainda precisa analisar os resultados antes do lançamento para garantir a compatibilidade comportamental. Alguns exemplos conhecidos incluem:

Verificar os upgrades disponíveis

O plug-in de versões do Gradle oferece mais controle de upgrade manual. A execução da tarefa dependencyUpdates (por meio de ./gradlew :dependencyUpdates) gera um relatório das versões mais recentes das dependências da biblioteca. Isso pode ser útil para verificar o status da biblioteca e segmentar manualmente quais bibliotecas você quer atualizar em um determinado momento.

Isso pode ser útil principalmente se você estiver usando uma abordagem personalizada para especificar suas versões de dependência, em vez de um catálogo de versões.

Mudanças na dependência de relatórios

O upgrade das versões das bibliotecas que você usa diretamente pode ter um impacto muito maior no seu aplicativo. Cada biblioteca que você usa pode exigir outras dependências de biblioteca, formando um gráfico de dependência transitiva maior.

O Dependency Guard expõe as mudanças nesse gráfico entre as versões do aplicativo ou da biblioteca. Essa pode ser uma ferramenta valiosa para a análise de upgrade, garantindo que você considere upgrades diretos e indiretos.

Detectar dependências não utilizadas ou usadas indevidamente

Manter a integridade do seu build pode melhorar a velocidade dele e garantir que seu aplicativo e a biblioteca tenham acesso às dependências necessárias. O plug-in do Gradle para análise de dependências oferece ferramentas para examinar as dependências, verificando o uso adequado nos arquivos de build.

Seus relatórios incluem:

  • Dependências não utilizadas
  • Dependências transitivas usadas. Você precisa declará-las explicitamente para que o aplicativo possa acessá-las se as dependências diretas deixarem de usá-las.
  • Dependências declaradas no escopo errado
  • Uso desnecessário de alguns plug-ins
  • Visualizações do GraphViz das suas dependências

Gerenciamento de licença

Os desenvolvedores de cada biblioteca as licenciam para uso. Você precisa aderir aos termos da licença ou não poderá usar essa biblioteca. Algumas licenças são muito permissivas, muitas vezes exigindo apenas um aviso de uso. Algumas são consideradas "virais". Se você usar essas bibliotecas, vai precisar aplicar a mesma licença ao aplicativo ou à biblioteca.

As licenças podem mudar a qualquer momento. Sempre que você fizer upgrade, verifique se as dependências que você está usando estão licenciadas de maneira compatível com seu aplicativo ou biblioteca.

Relatório de licenças

O plug-in Gradle License Report ajuda a informar as licenças de todas as suas dependências. Verifique esse relatório ao atualizar dependências. Verifique se as licenças são compatíveis com seus requisitos e se você está cumprindo os termos necessários.

Gerar avisos de licença

Os termos de licenciamento geralmente exigem um aviso que os usuários de um aplicativo ou consumidores de uma biblioteca podem acessar. O plug-in de licença do Gradle gera dados ou HTML para mostrar esses avisos no seu aplicativo.

Embora isso automatize grande parte dos seus requisitos de notificação, ele não informa licenças de recursos (por exemplo, licenças necessárias para fontes, imagens ou sons) ou licenças de snippets de código copiados da Internet. É necessário rastrear e informar esse uso manualmente.