So überprüfen Sie, ob die Gradle-Abhängigkeit eine neue Version hat

231

Wenn ich +in Android Studio eine Versionsnummer (wie com.android.support:recyclerview-v7:21.+) verwende, wird die Warnung "Vermeiden Sie die Verwendung von + in Versionsnummern" angezeigt. Wenn ich eine bestimmte Versionsnummer verwende, kann ich nicht immer die neueste Version verwenden. Ich habe viele Abhängigkeiten in meinem Projekt. Wie überprüfe ich, ob eine Abhängigkeit eine neuere Version hat? Gibt es ein Android Studio-Plugin - oder so ähnlich -, das mich benachrichtigt, wenn es eine neuere Version einer Abhängigkeit gibt?

Bearbeiten: Android Studio hebt die veralteten Android-Support-Bibliotheken und Google Play-Dienste hervor. Dies ist jedoch für andere benutzerdefinierte Bibliotheken nicht verfügbar.

Geben Sie hier die Bildbeschreibung ein

osrl
quelle
Entwickler, die die Bibliothek aktualisieren, finden Sie unter: Wie aktualisiere ich die Bibliothek für eine neue Version in Bintray?
Suragch
2
In mindestens Android 3.0 zeigen Updates für benutzerdefinierte Bibliotheken jetzt dieselbe Benachrichtigung wie in Ihrem Fragenbild für die Support-Bibliothek.
Suragch
@ Suragch dies funktioniert nicht für einige Abhängigkeiten für mich in Android Studio 3.0.1
Rémy
Wir können gradleplease.appspot.com verwenden, um die neue Bibliotheksversion zu überprüfen
Alex Kisel

Antworten:

187

Dies ist jetzt in Android Studio als Lint-Check integriert. Sie können es hier aktivieren:

Einstellungen> Editor> Inspektionen> "Neuere Bibliotheksversionen verfügbar"

Die Beschreibung für diese Inspektion:

Neuere Bibliotheksversionen verfügbar

Dieser Detektor überprüft mit einem zentralen Repository, ob für die von diesem Projekt verwendeten Abhängigkeiten neuere Versionen verfügbar sind. Dies ähnelt der GradleDependency-Prüfung, bei der nach neueren Versionen gesucht wird, die in den Android SDK-Tools und -Bibliotheken verfügbar sind. Dies funktioniert jedoch mit jeder MavenCentral-Abhängigkeit und stellt jedes Mal eine Verbindung zur Bibliothek her, wodurch sie flexibler, aber auch viel langsamer wird.

Aufgrund der damit verbundenen Verlangsamung würde ich empfehlen, es regelmäßig manuell auszuführen, anstatt es immer eingeschaltet zu haben. Sie können dies tun durch:

Analysieren> "Inspektion nach Namen ausführen"

Suchen Sie dann nach "Neuere verfügbare Bibliotheksversionen" und führen Sie sie auf Ihrem Modul aus.

Bearbeiten : Das obige sollte nur ab Android Studio 2.3 funktionieren. Wenn Sie eine alte Version verwenden (Sie sollten diese aktualisieren), kann Folgendes hilfreich sein:

Beachten Sie, dass anscheinend die Inspektion aktiviert sein muss, um sie manuell ausführen zu können. Daher müssen Sie (ab Android Studio 2.0 Beta 2) die Inspektion in den Einstellungen suchen, aktivieren, dann nach Namen ausführen und dann erneut deaktivieren ( frühere Leistung wiederzugewinnen).

Adam S.
quelle
4
Ich weiß nicht, ob ich etwas falsch mache, aber das hat bei mir nicht funktioniert
osrl
1
Ja das gleiche für mich, Realm ist nicht auf MavenCentral. Ist Ihre Nachrüstversion so definiert? Meins ist, und es konnte es auch nicht finden def okhttpVersion = '2.7.2' compile "com.squareup.okhttp:okhttp:$okhttpVersion"
osrl
1
mit definierter Versionszeichenfolge konnte nicht gefunden werden. Es konnte finden com.squareup.okhttp:okhttp:2.7.2. Auch am2.0.0-beta4
osrl
2
Dies zeigt die verfügbaren Updates auf einer Registerkarte "Inspektion" an, hebt sie jedoch nicht als Warnung in build.gradle hervor. Ich muss noch eine Lösung finden, die das tut.
Tiago
3
Ich musste auf diese Antwort zurückkommen, um zu melden, dass sie NUR für MavenCentral-Abhängigkeiten funktioniert. Dies bedeutet, dass Repositorys von Jitpack oder anderen Quellen NICHT automatisch aktualisiert werden. Die richtige Methode zum Abrufen der neuesten Version ALLER Abhängigkeiten finden Sie unter dieser Antwort [ stackoverflow.com/questions/28538824/… (hier)
Ray Li
274

UPDATE (23.05.18):

Die neuere Version von Android Studio zeigt keine Versionsaktualisierungen im Dialogfeld "Projektstruktur" an. Stattdessen ist Adams Antwort die richtige für Android Studio 3+

Analysieren> "Inspektion nach Namen ausführen"

Dann suchen Sie nach " Newer Library Versions Available"

VORHERIGER WEG:

Ab Android Studio 2.2einem neuen Project StructureDialogfeld wird die Liste der Abhängigkeiten angezeigt, die Ihre App mit den verfügbaren Updates aus lokalen UND Remote-Repositorys verwendet.

  • Aktivieren Sie es, indem Sie auf Android Studio > Settings > Build, Execution, Deployment > Gradle > Experimental(Überprüfen Sie Use new Project Structure dialog@jessehensold)
  • Dann öffnen Sie es, indem Sie zu gehen File > Project Structure > Messages

Geben Sie hier die Bildbeschreibung ein

Für ältere Versionen von Android Studio siehe andere Antworten unten.

Quanturium
quelle
1
Über die Bearbeitung; Es ging um Android-Studio, weil ich nach einem Android Studio Plugin suchte. Danke für die Antwort, aber ich habe sie bereits gesehen.
osrl
11
Dies ist in Android Studio nicht mehr vorhanden (mit Beta 2).
Gonzalo
8
Ich musste zu Einstellungen> Erstellen, Ausführen, Bereitstellen> Gradle> Experimentieren gehen und den Dialog 'Neue Projektstruktur verwenden'
überprüfen
1
Gehen Sie zur Registerkarte "Abhängigkeiten", um die Schaltfläche "Anwenden" zu aktivieren. Irgendein Fehler?
Mateusz Kaflowski
2
Ich habe dies mit Android Studio 2.3 versucht, aber auf der DependenciesRegisterkarte " Project StructureDialogfeld" werden keine Abhängigkeiten von meinem Projekt gefunden.
Jakub.g
58

Abgesehen von der integrierten Funktion von Android Studio gibt es ein nettes Gradle-Plugin namens Gradle Versions Plugin , das genau das tut, was Sie wollen, mit dem Vorteil, dass es eine einfache Gradle-Erweiterung ist, also NICHT an eine bestimmte IDE gebunden ist und daher für jedes Projekt mit Gradle nützlich ist.

Das Gradle Versions Plugin kann Berichte in lesbarer Klartextform erstellen, sie aber auch als JSON oder XML für die automatisierte Verarbeitung ausgeben.

Nach dem Hinzufügen zu Ihrer Gradle-Datei sieht die Standardverwendung eher so aus:

> ./gradlew dependencyUpdates

Dies würde einen Projektabhängigkeitsbericht erzeugen, der folgendermaßen aussieht:

------------------------------------------------------------
: 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

Ausführliche Anwendungsbeispiele finden Sie in den Dokumenten .


HINWEIS: Zum Zeitpunkt des Schreibens dieser Antwort (2017-01) erzeugen Versionen über 0.17.0 mehr Ausgabe im Plan-Textformat, einschließlich Projekt-URLs machen die gesamte Ausgabe aufgebläht. Wenn Sie, wie ich das für nutzlos halte, entweder bei Version 0.17.0 bleiben oder eine Version verwenden, bei der dieses Problem auf jeden Fall behoben wurde (falls eine solche Version vorhanden ist;)

Marcin Orlowski
quelle
3
Genial! Ich bin hierher gekommen, um dies für ein normales Java-Projekt zu suchen. Eine schöne allgemeine Lösung ohne Lint's Android-Spezifität.
TWiStErRob
Ich habe eine Fehlermeldung erhalten, 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.als dies ausgeführt wurde.
Obst
Füllen Sie den Fehlerbericht hier aus: github.com/ben-manes/gradle-versions-plugin/issues
Marcin Orlowski
2
Die Methode "Neuere Bibliotheksversionen verfügbar" hat nicht funktioniert, aber das ist perfekt! (Ich benutze mehrere Gradle-Dateien mit Variablen für lib-Versionen)
norbDEV
Können Sie ein Bild von diesem Plugin hinzufügen? Ich habe es nicht in einer Liste gefunden.
CoolMind
14

DEPRECATED - SEE AKZEPTIERT ANTWORT FÜR MODERNE ART

Das unten vorgestellte Tool funktioniert nicht mit neuen Versionen von Android Studio / Gradle und wird vom Autor nicht mehr verwaltet ( Stand: 30.10.2016 ). Daher sollte die in der akzeptierten Antwort angegebene Lösung verwendet werden, sofern nicht mit der alten Version von Android Studio gearbeitet wird.


Ab Januar 2016 gibt es ein Plugin für Android Studio, das etwas Ähnliches tut, Dependencies Version Checker , und dessen Quellen auf GitHub zu finden sind .

Es kann über die integrierte Benutzeroberfläche hinzugefügt werden (Einstellungen> Plugins> Repositorys durchsuchen ...):

Wie es in der nativen Oberfläche aussieht

Nach der Installation und dem Neustart wird die folgende Registerkarte in der Benutzeroberfläche angezeigt:

Neue Benutzeroberfläche, die nach dem Neustart angezeigt wird.

Das relevante build.gradlesollte dann in die linke Seite des VersionChecker-Bedienfelds eingefügt und die Version CheckTaste gedrückt werden. Das Ergebnis ist eine Tabelle auf der rechten Seite, die die neuesten Versionen der Bibliotheken enthält, die im eingefügten Skript verwendet werden (siehe Abbildung oben).

Teufel
quelle
Auch wenn ich das zuerst gesucht habe, funktioniert es nicht wie erwartet. Ich habe eine Ausgabe im Github-Repo darüber eröffnet. github.com/takuaraki/DependenciesVersionChecker/issues/5
osrl
Ich habe dies versucht und eine allgemeine Fehler- / Fehlermeldung erhalten, als ich auf "Versionen überprüfen" geklickt habe
Greg Ennis
@ GregEnnis Es gibt ein Problem mit der neuesten Version des Plugins. Verwenden Sie entweder ein älteres oder warten Sie auf ein Update ...
Dev-iL
11

Siehe Datei> Projektstruktur und klicken Sie dann auf "Vorschläge". Ich weiß, diese Lösung wurde von Hemant Sharma und Jeremías Gersicich vorgeschlagen, aber Android Studio hat sie in der Version 3.4.1 geändert.

Geben Sie hier die Bildbeschreibung ein

CoolMind
quelle
Hat noch jemand diesen Bildschirm auf Android Studio 3.5 leer?
Nicola Beghin
@NicolaBeghin, ich habe gerade ein leeres Projekt überprüft und 4 Vorschläge erhalten. Ja, es gab einen Begriff, bei dem im Juli keine Vorschläge angezeigt wurden, aber dieser Fehler wurde behoben. Ich nehme an, es ist ein Google Server-Problem, es kann manchmal passieren.
CoolMind
Unterstützt nichtGradle KTS
Vlad
2

Für Abhängigkeiten der Unterstützungsbibliothek (com.android.support) gibt es eine bessere Option - andle

Es kann auch jcenter und maven center abfragen.

Einfache drei Schritte, um alle Projekte gleichzeitig zu aktualisieren.

1. installieren:

    $ sudo pip install andle

2. sdk setzen:

    $ andle setsdk -p <sdk_path>

3. Aktualisierungsabhängigkeit:

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

--dryrun: Nur Druckergebnis in der Konsole

--remote: Version in jcenter und mavenCentral überprüfen

--gradle: Überprüfen Sie die Gradle-Version

Weitere Informationen finden Sie unter https://github.com/Jintin/andle

Jintin
quelle
nur für Support-Bibliotheken?
osrl
@osrl Wenn Sie --remote oder -r hinzufügen, wird die Version in jcenter analysiert.
Jintin
0

Ich habe mich mit demselben Problem befasst und die Antwort https://stackoverflow.com/a/35371234/6412430 ausprobiert

Was für mich unter Android Studio 3.4.1 wirklich funktioniert hat, war:

File -> Project Structure -> Dependencies

Sobald Sie diesen Punkt erreicht haben, werden alle Abhängigkeiten aufgelistet, die in Ihrem Projekt oder Modul enthalten sind. Diejenigen, die veraltet sind, werden unterstrichen. Wenn Sie eine auswählen, werden die Details angezeigt, sodass Sie die Option zum Aktualisieren der Variablen (sofern Sie sie von der Deklaration getrennt haben) oder der Abhängigkeit erhalten.

Ein bisschen spät, aber das hat bei mir funktioniert.

Jeremías Gersicich
quelle
Ich habe auch diesen Weg gefunden. Seltsam, dass jemand Minus markiert hat.
CoolMind
-1

Um für Ihr Projekt aktualisiert oder empfohlen zu werden, sollte die Abhängigkeit mit dem Android-Projekt identisch sein

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

Wenn Sie die Registerkarte Abhängigkeiten erreichen Klicken Sie auf die +Schaltfläche, die sich in der oberen rechten Ecke des Fensters befindet. Wenn Sie auf +Auswählen klicken Library Dependency, wird das neue Fenster für die Choose Library DependencySuche nach Ihrer Abhängigkeit im Suchfeld geöffnet. Alle aufgelisteten Android-Abhängigkeiten werden aktualisiert.

Hemant Sharma
quelle
Danke, aber diese Liste enthält auch Bibliotheken, die ich nicht benutze und manchmal nicht, was ich benutze. Auch Gson ist, com.google.code.gson:gson:2.2.4während es tatsächlich istcom.google.code.gson:gson:2.8.5
CoolMind
Manchmal funktionieren Abhängigkeiten mit kompatiblen Gradle-Versionen. Bitte überprüfen Sie, ob Sie aktualisierte Gradle in Ihrem Gradle auf Projektebene verwenden
Hemant Sharma