Come verificare se la dipendenza gradle ha una nuova versione


232

In Android Studio quando utilizzo il +numero di versione (come com.android.support:recyclerview-v7:21.+) ricevo l'avviso "Evita di utilizzare + nei numeri di versione". Quando utilizzo un numero di versione specifico non posso sempre utilizzare l'ultima versione. Ho molte dipendenze nel mio progetto. Come posso verificare se una dipendenza ha una versione più recente? Esiste un plug-in Android Studio, o qualcosa del genere, per avvisarmi quando esiste una versione più recente di una dipendenza?

Modifica: Android Studio evidenzia le librerie di supporto Android obsolete e i servizi di Google Play. Ma questo non è disponibile per altre librerie personalizzate.

inserisci qui la descrizione dell'immagine


Per gli sviluppatori che stanno aggiornando la libreria, consultare: Come aggiornare la libreria per la nuova versione in Bintray?
Suragch,

2
In almeno Android 3.0, gli aggiornamenti per le librerie personalizzate ora mostrano la stessa notifica presente nell'immagine della domanda per la libreria di supporto.
Suragch,

@Suragch questo non funziona per alcune dipendenze per me in Android Studio 3.0.1
Rémy

Possiamo usare gradleplease.appspot.com per controllare la nuova versione della biblioteca
Alex Kisel,

Risposte:


187

Ora è integrato in Android Studio come controllo Lint. Puoi abilitarlo qui:

Impostazioni> Editor> Ispezioni> "Versioni più recenti della libreria disponibili"

La descrizione per questa ispezione:

Disponibili versioni più recenti della libreria

Questo rilevatore verifica con un repository centrale per verificare se sono disponibili versioni più recenti per le dipendenze utilizzate da questo progetto. Questo è simile al controllo GradleDependency, che controlla le versioni più recenti disponibili negli strumenti e nelle librerie SDK Android, ma funziona con qualsiasi dipendenza MavenCentral e si collega alla libreria ogni volta, il che lo rende più flessibile ma anche molto più lento.

A causa del rallentamento che questo può introdurre, ti consiglio di eseguirlo manualmente periodicamente, invece di averlo sempre acceso. Puoi farlo tramite:

Analizza> "Esegui ispezione per nome"

Quindi cerca "Versioni libreria più recenti disponibili" ed eseguilo sul tuo modulo.

Modifica : quanto sopra dovrebbe funzionare solo da Android Studio 2.3. Se utilizzi una versione precedente (è necessario aggiornare), potrebbe essere utile quanto segue:

Tieni presente che è necessario che l'ispezione sia abilitata per eseguirla manualmente, quindi (a partire da Android Studio 2.0 Beta 2) è necessario trovare l'ispezione nelle impostazioni, abilitarlo, quindi eseguirlo per nome, quindi disabilitarlo di nuovo ( per recuperare le prestazioni precedenti).


4
Non so se sto facendo qualcosa di sbagliato ma non ha funzionato per me
osrl,

1
Sì lo stesso per me, il regno non è su MavenCentral. La tua versione di retrofit è definita in questo modo? Il mio è, e non è riuscito a trovarlo def okhttpVersion = '2.7.2' compile "com.squareup.okhttp:okhttp:$okhttpVersion"
osrl,

1
con la stringa di versione definita non è stato possibile trovare. È stato in grado di trovare com.squareup.okhttp:okhttp:2.7.2. Anche su2.0.0-beta4
osrl,

2
Questo mostra gli aggiornamenti disponibili in una scheda "Ispezione", ma non lo evidenzia come un avviso in build.gradle. Devo ancora trovare una soluzione che lo faccia.
Tiago,

3
Ho dovuto tornare a questa risposta per segnalare che funziona SOLO per le dipendenze MavenCentral. Ciò significa che i repository di Jitpack o di altre fonti NON vengono aggiornati automaticamente. Il metodo corretto per ottenere l'ultima versione di TUTTE le dipendenze è a questa risposta [ stackoverflow.com/questions/28538824/… (qui)
Ray Li

274

AGGIORNAMENTO (23/05/18):

La versione più recente di Android Studio non mostra gli aggiornamenti di versione nella finestra di dialogo Struttura del progetto. Invece, la risposta di Adam è quella corretta per Android Studio 3+

Analizza> "Esegui ispezione per nome"

Quindi cerca " Newer Library Versions Available"

MODO PRECEDENTE:

A partire da Android Studio 2.2, una nuova Project Structurefinestra di dialogo mostra l'elenco delle dipendenze utilizzate dalla tua app con gli aggiornamenti disponibili anche dai repository locali E remoti.

  • Attivalo andando su Android Studio > Settings > Build, Execution, Deployment > Gradle > Experimentale controllare il Use new Project Structure dialog(Grazie @jessehensold)
  • Quindi aprilo andando a File > Project Structure > Messages

inserisci qui la descrizione dell'immagine

Per la versione precedente di Android Studio, vedi le altre risposte di seguito.


1
Informazioni sulla modifica; si trattava di android-studio, perché stavo cercando un plugin per Android Studio. Grazie per la risposta, ma l'ho già vista.
osrl,

11
Questo non è più presente in Android Studio (usando beta 2).
Gonzalo,

8
Ho dovuto andare in Preferenze> Build, Execution, Deployment> Gradle> Experimental e controllare la finestra di dialogo "Usa nuova struttura del progetto"
jessehensold,

1
Devi selezionare la scheda "Dipendenze" per abilitare il pulsante "applica". Qualche bug?
Mateusz Kaflowski,

2
Ho provato questo con Android Studio 2.3 ma la Dependenciesscheda della Project Structurefinestra di dialogo non trova alcuna dipendenza dal mio progetto.
jakub.g,

58

Oltre alla funzionalità integrata di Android Studio, c'è un piacevole plug-in Gradle chiamato Gradle Versions Plugin che fa esattamente quello che vuoi, con il vantaggio di essere una semplice estensione Gradle, quindi NON legare a un IDE specifico, quindi utile per qualsiasi progetto che utilizza Gradle.

Versioni graduali Il plug-in può creare report in forma di testo semplice leggibile dall'uomo, ma anche scaricarlo come JSON o XML per l'elaborazione automatizzata.

Una volta aggiunto al tuo file gradle, l'utilizzo standard sarebbe più simile a:

> ./gradlew dependencyUpdates

Ciò produrrebbe un rapporto sulla dipendenza del progetto che assomiglia a questo:

------------------------------------------------------------
: Project Dependency Updates (report to plain text file)
------------------------------------------------------------

The following dependencies are using the latest milestone version:
 - com.github.maksim88:PasswordEditText:v0.9
 - com.android.databinding:adapters:1.3.1
 - com.joanzapata.iconify:android-iconify-entypo:2.2.2
 - com.joanzapata.iconify:android-iconify-fontawesome:2.2.2
 - com.webnetmobile.tools:webnet-log:1.0.3
 - com.nulab-inc:zxcvbn:1.2.2

The following dependencies exceed the version found at the milestone revision level:
 - com.hannesdorfmann.fragmentargs:annotation [4.0.0-SNAPSHOT <- 3.0.2]
 - com.hannesdorfmann.fragmentargs:bundler-parceler [4.0.0-SNAPSHOT <- 3.0.2]
 - com.github.bumptech.glide:glide [3.7.0 <- 3.6.1]
 - com.hannesdorfmann.fragmentargs:processor [4.0.0-SNAPSHOT <- 3.0.2]

The following dependencies have later milestone versions:
 - com.github.PhilJay:MPAndroidChart [v2.2.5 -> v3.0.1]
 - com.android.support:appcompat-v7 [25.1.0 -> 25.1.1]
 - com.jakewharton:butterknife [8.4.0 -> 8.5.1]

Generated report file build/dependencyUpdates\report.txt

Consulta i documenti per esempi di utilizzo estesi.


NOTA: a partire dalla stesura di questa risposta (2017-01), le versioni successive a 0.17.0 producono più output in formato di testo del piano, incl. gli URL di progetto rendendo così gonfio l'intero output. Se tu, come lo trovo inutile, ti attieni alla versione 0.17.0 o usi la versione a cui questo problema è stato risolto in qualunque modo (se esiste tale versione;)


3
Eccezionale! Sono arrivato qui cercando questo per un normale progetto Java. Una bella soluzione generale senza la specificità Android di Lint.
TWiStErRob,

Ho ricevuto un errore Configuration 'compile' in project ':myapp' is deprecated. Use 'implementation' instead. The CompileOptions.bootClasspath property has been deprecated and is scheduled to be removed in Gradle 5.0. Please use the CompileOptions.bootstrapClasspath property instead.durante l'esecuzione.
Frutta


2
Il metodo "Versioni più recenti della libreria disponibili" non ha funzionato, ma questo è perfetto! (Uso più file Gradle con variabili per le versioni lib)
norbDEV

Puoi aggiungere una foto di quel plugin? Non l'ho trovato in un elenco.
CoolMind

14

DEPRECATO - VEDI RISPOSTA ACCETTATA PER MODO MODERNO

Lo strumento che presento di seguito non funziona con le nuove versioni di Android Studio / Gradle e il suo autore non lo mantiene più ( al 30/10/2016 ). Pertanto, la soluzione presentata nella risposta accettata deve essere utilizzata a meno che non si lavori con la vecchia versione di Android Studio.


A partire da gennaio 2016, c'è un plug-in per Android Studio che fa qualcosa di simile, chiamato Dependencies Version Checker , e le cui fonti sono disponibili su GitHub .

Può essere aggiunto tramite l'interfaccia integrata (Impostazioni> Plugin> Sfoglia repository ...):

Come si presenta nell'interfaccia nativa

Dopo l'installazione e il riavvio, la seguente scheda appare nell'interfaccia utente:

Nuova scheda UI che appare dopo il riavvio.

Il relativo build.gradledeve quindi essere incollato nella parte sinistra del pannello VersionChecker e il Version Checkpulsante premuto. Il risultato è una tabella che appare sul lato destro, che include le ultime versioni delle librerie utilizzate nello script incollato (come mostrato nell'immagine sopra).


Anche se questo è quello che stavo cercando in primo luogo, non funziona come previsto. Ho aperto un problema nel repository Github al riguardo. github.com/takuaraki/DependenciesVersionChecker/issues/5
osrl

Ho provato questo e ho ottenuto un fumetto generico di errore / errore quando ho fatto clic su "Controlla versioni"
Greg Ennis

@GregEnnis Si è verificato un problema con l'ultima versione del plug-in. O usane uno precedente o attendi un aggiornamento ...
Dev-iL

11

Vedi File> Struttura del progetto, quindi fai clic su "Suggerimenti". Lo so, questa soluzione è stata suggerita da Hemant Sharma e Jeremías Gersicich, ma Android Studio l'ha modificata nella versione 3.4.1.

inserisci qui la descrizione dell'immagine


qualcun altro sta ottenendo questa schermata vuota su Android Studio 3.5?
Nicola Beghin,

@NicolaBeghin, ho appena verificato il progetto vuoto e ho ricevuto 4 suggerimenti. Sì, c'era un termine, quando non mostrava suggerimenti, a luglio, ma hanno risolto questo errore. Suppongo che sia un problema del server di Google, a volte può succedere.
CoolMind

Non supportaGradle KTS
Vlad

2

Per le dipendenze della libreria di supporto (com.android.support), esiste un'opzione migliore: andle

Può anche interrogare jcenter e maven center.

Tre semplici passaggi per aggiornare tutti i progetti contemporaneamente.

1. installa:

    $ sudo pip install andle

2. imposta sdk:

    $ andle setsdk -p <sdk_path>

3. aggiornamento dipedency:

    $ andle update -p <project_path> [--dryrun] [--remote] [--gradle]

--dryrun: stampa solo il risultato nella console

--remote: controlla la versione in jcenter e mavenCentral

--gradle: controlla la versione gradle

Vedi https://github.com/Jintin/andle per maggiori informazioni


solo per le librerie di supporto?
osrl,

@osrl se aggiungi --remote o -r analizzerà la versione su jcenter.
Jintin,

0

Stavo affrontando lo stesso problema e ho provato la risposta https://stackoverflow.com/a/35371234/6412430

Ciò che ha funzionato davvero per me su Android Studio 3.4.1 è stato:

File -> Project Structure -> Dependencies

Una volta raggiunto questo punto, verranno elencate tutte le dipendenze incluse nel progetto o modulo. Quelli che sono obsoleti verranno sottolineati e quando ne selezioni uno, i dettagli di esso verranno mostrati dandoti le opzioni per aggiornare la variabile (se l'hai separata dalla dichiarazione) o la Dipendenza.

Un po 'tardi, ma questo è ciò che ha funzionato per me.


Ho trovato anche così. Strano che qualcuno abbia segnato meno.
CoolMind

-1

Per essere aggiornato o raccomandato per la tua dipendenza dal progetto dovrebbe essere lo stesso del progetto Android

FILE -> Project Structure -> MODULES(app) -> Dependencies

Quando si raggiunge la scheda Dipendenze Fare clic sul +pulsante che si trova nell'angolo in alto a destra della finestra. Quando fai clic su +Seleziona Library Dependency, si aprirà una nuova finestra per la Choose Library Dependencyricerca della tua dipendenza nella casella di ricerca, tutte le dipendenze Android elencate verranno aggiornate.


Grazie, ma questo elenco contiene anche librerie che non utilizzo e che talvolta non contengono ciò che utilizzo. Anche Gson lo è com.google.code.gson:gson:2.2.4davverocom.google.code.gson:gson:2.8.5
CoolMind

a volte le dipendenze funzionano con una versione di livello compatibile, si prega di verificare se si sta utilizzando un livello aggiornato nel livello di livello del progetto
Hemant Sharma
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.