Comment vérifier si la dépendance Gradle a une nouvelle version

232

Dans Android Studio lorsque j'utilise +dans le numéro de version (comme com.android.support:recyclerview-v7:21.+), je reçois l'avertissement "Évitez d'utiliser + dans les numéros de version". Lorsque j'utilise un numéro de version spécifique, je ne peux pas toujours utiliser la dernière version. J'ai beaucoup de dépendances dans mon projet. Comment vérifier si une dépendance a une version plus récente? Existe-t-il un plugin Android Studio -ou quelque chose comme ça- pour m'avertir quand il y a une nouvelle version d'une dépendance?

Edit: Android studio met en évidence les bibliothèques de support Android obsolètes et les services Google Play. Mais cela n'est pas disponible pour les autres bibliothèques personnalisées.

entrez la description de l'image ici

osrl
la source
Pour les développeurs qui mettent à jour la bibliothèque, voir: Comment mettre à jour la bibliothèque pour une nouvelle version dans Bintray?
Suragch
2
Dans au moins Android 3.0, les mises à jour pour les bibliothèques personnalisées affichent désormais la même notification que celle que vous avez dans votre image de question pour la bibliothèque de support.
Suragch
@Suragch cela ne fonctionne pas pour certaines dépendances pour moi dans le studio android 3.0.1
Rémy
Nous pouvons utiliser gradleplease.appspot.com pour vérifier la nouvelle version de la bibliothèque
Alex Kisel

Réponses:

187

Ceci est maintenant intégré à Android Studio en tant que vérification des peluches. Vous pouvez l'activer ici:

Paramètres> Éditeur> Inspections> "Versions de bibliothèque plus récentes disponibles"

La description de cette inspection:

Versions de bibliothèque plus récentes disponibles

Ce détecteur vérifie auprès d'un référentiel central pour voir s'il existe des versions plus récentes disponibles pour les dépendances utilisées par ce projet. Ceci est similaire à la vérification GradleDependency, qui vérifie les nouvelles versions disponibles dans les outils et bibliothèques du SDK Android, mais cela fonctionne avec n'importe quelle dépendance MavenCentral et se connecte à la bibliothèque à chaque fois, ce qui la rend plus flexible mais aussi beaucoup plus lente.

En raison du ralentissement que cela peut entraîner, je vous recommande de l'exécuter périodiquement manuellement, plutôt que de l'avoir toujours activé. Vous pouvez le faire en:

Analyser> "Exécuter l'inspection par nom"

Recherchez ensuite «Versions de bibliothèque plus récentes disponibles» et exécutez-le sur votre module.

Modifier : ce qui précède ne devrait fonctionner qu'à partir d'Android Studio 2.3. Si vous utilisez une ancienne version (vous devez mettre à jour), les éléments suivants peuvent vous aider:

Notez qu'il semble que vous devez activer l'inspection afin de l'exécuter manuellement - donc (à partir d'Android Studio 2.0 Beta 2), vous devez trouver l'inspection dans les paramètres, l'activer, puis l'exécuter par nom, puis la désactiver à nouveau ( pour retrouver les performances précédentes).

Adam S
la source
4
Je ne sais pas si je fais quelque chose de mal mais cela n'a pas fonctionné pour moi
osrl
1
Oui, même pour moi, le domaine n'est pas sur MavenCentral. Votre version de modification est-elle définie comme ceci? Le mien est, et il n'a pas pu le trouver non plus def okhttpVersion = '2.7.2' compile "com.squareup.okhttp:okhttp:$okhttpVersion"
osrl
1
avec la chaîne de version définie n'a pas pu être trouvée. Il a pu trouver com.squareup.okhttp:okhttp:2.7.2. Également sur2.0.0-beta4
osrl
2
Cela montre les mises à jour disponibles dans un onglet "Inspection", mais il ne le met pas en surbrillance comme un avertissement dans build.gradle. Je n'ai pas encore trouvé de solution pour cela.
Tiago
3
J'ai dû revenir à cette réponse pour signaler qu'elle ne fonctionne que pour les dépendances MavenCentral. Cela signifie que les référentiels de Jitpack ou d'autres sources ne sont PAS automatiquement mis à jour. La bonne méthode pour obtenir la dernière version de TOUTES les dépendances est à cette réponse [ stackoverflow.com/questions/28538824/… (ici)
Ray Li
274

MISE À JOUR (23/05/18):

La nouvelle version d'Android Studio n'affiche pas les mises à jour de version dans la boîte de dialogue Structure du projet. Au lieu de cela, la réponse d'Adam est la bonne pour Android Studio 3+

Analyser> "Exécuter l'inspection par nom"

Recherchez ensuite " Newer Library Versions Available"

VOIE PRÉCÉDENTE:

À partir du Android Studio 2.2, une nouvelle Project Structureboîte de dialogue affiche également la liste des dépendances que votre application utilise avec les mises à jour disponibles à partir des référentiels locaux ET distants.

  • Activez-le en allant sur Android Studio > Settings > Build, Execution, Deployment > Gradle > Experimentalet vérifiez le Use new Project Structure dialog(Merci @jessehensold)
  • Ensuite, ouvrez-le en allant à File > Project Structure > Messages

entrez la description de l'image ici

Pour une version plus ancienne d'Android Studio, consultez les autres réponses ci-dessous.

Quanturium
la source
1
À propos de l'édition; il s'agissait d'android-studio, car je cherchais un plugin Android Studio. Merci pour la réponse mais je l'ai déjà vue.
osrl
11
Ce n'est plus présent dans Android Studio (en utilisant la bêta 2).
Gonzalo
8
Je devais aller dans Préférences> Build, Execution, Deployment> Gradle> Experimental et vérifier la 'Use new Project Structure dialog'
jessehensold
1
Je dois aller dans l'onglet "Dépendances" pour activer le bouton "Appliquer". Un bug?
Mateusz Kaflowski
2
J'ai essayé cela avec Android Studio 2.3 mais l' Dependenciesonglet de Project Structuredialogue ne trouve aucune dépendance de mon projet.
jakub.g
58

Mis à part la fonctionnalité intégrée d'Android Studio, il y a un joli plugin Gradle appelé Gradle Versions Plugin qui fait exactement ce que vous voulez, avec l'avantage d'être une simple extension Gradle afin de ne PAS être lié à un IDE spécifique, donc utile pour tout projet utilisant Gradle.

Le plugin Gradle Versions peut créer des rapports sous forme de texte brut lisible par l'homme, mais aussi le vider au format JSON ou XML pour un traitement automatisé.

Une fois ajoutée à votre fichier Gradle, l'utilisation standard ressemblerait davantage à:

> ./gradlew dependencyUpdates

Cela produirait un rapport de dépendance de projet qui ressemble à ceci:

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

Voir les documents pour des exemples d'utilisation détaillés.


REMARQUE: au moment d'écrire cette réponse (2017-01), les versions supérieures à 0,17.0 produisent plus de sortie au format texte plan, incl. URL du projet rendant ainsi toute la sortie gonflée. Si vous, comme moi, trouvez cela inutile, restez à la version 0.17.0 ou utilisez une version qui a ce problème résolu de toute façon (si une telle version existe;)

Marcin Orlowski
la source
3
Impressionnant! Vous êtes ici à la recherche de cela pour un projet Java normal. Une belle solution générale sans la spécificité Android de Lint.
TWiStErRob
J'ai reçu une erreur 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.lors de l'exécution de ceci.
Fruit
remplissez le rapport de bogue ici: github.com/ben-manes/gradle-versions-plugin/issues
Marcin Orlowski
2
La méthode "Versions de bibliothèque plus récentes disponibles" n'a pas fonctionné, mais c'est parfait! (J'utilise plusieurs fichiers Gradle avec des variables pour les versions lib)
norbDEV
Pouvez-vous ajouter une image de ce plugin? Je ne l'ai pas trouvé dans une liste.
CoolMind
14

Obsolète - VOIR LA RÉPONSE ACCEPTÉE POUR UNE VOIE MODERNE

L'outil que je présente ci-dessous ne fonctionne pas sur les nouvelles versions d'Android Studio / Gradle et son auteur ne le maintient plus ( au 30/10/2016 ). Par conséquent, la solution présentée dans la réponse acceptée doit être utilisée à moins de travailler avec l'ancienne version d'Android Studio.


Depuis janvier 2016, il existe un plugin pour Android Studio qui fait quelque chose de similaire, appelé Dependencies Version Checker , et dont les sources peuvent être trouvées sur GitHub .

Il peut être ajouté via l'interface intégrée (Paramètres> Plugins> Parcourir les référentiels ...):

À quoi il ressemble à l'intérieur de l'interface native

Après l'installation et le redémarrage, l'onglet suivant apparaît dans l'interface utilisateur:

Nouvel onglet d'interface utilisateur qui apparaît après le redémarrage.

Les informations pertinentes build.gradledoivent ensuite être collées dans la partie gauche du panneau VersionChecker et le Version Checkbouton enfoncé. Le résultat est un tableau qui apparaît sur le côté droit, qui inclut les dernières versions des bibliothèques utilisées dans le script collé (comme indiqué dans l'image ci-dessus).

Diable
la source
Même si c'est ce que je cherchais en premier lieu, cela ne fonctionne pas comme prévu. J'ai ouvert un problème dans le référentiel Github à ce sujet. github.com/takuaraki/DependenciesVersionChecker/issues/5
osrl
J'ai essayé cela et j'ai obtenu un ballon de message d'erreur / d'échec générique lorsque j'ai cliqué sur "vérifier les versions"
Greg Ennis
@GregEnnis Il y a un problème avec la dernière version du plugin. Utilisez une version plus ancienne ou attendez une mise à jour ...
Dev-iL
11

Voir Fichier> Structure du projet, puis cliquez sur "Suggestions". Je sais, cette solution a été suggérée par Hemant Sharma et Jeremías Gersicich, mais Android Studio l'a changé dans la version 3.4.1.

entrez la description de l'image ici

CoolMind
la source
quelqu'un d'autre obtient cet écran juste vide sur android studio 3.5?
Nicola Beghin
@NicolaBeghin, je viens de vérifier un projet vide et j'ai reçu 4 suggestions. Oui, il y avait un terme, quand il ne montrait pas de suggestions, en juillet, mais ils ont corrigé ce bogue. Je suppose que c'est un problème de serveur Google, cela peut arriver parfois.
CoolMind
Ne prend pas en chargeGradle KTS
Vlad
2

Pour les dépendances de la bibliothèque de support (com.android.support), il existe une meilleure option - andle

Il peut également interroger jcenter et maven center.

Trois étapes simples pour mettre à jour tous les projets à la fois.

1. installez:

    $ sudo pip install andle

2. définissez sdk:

    $ andle setsdk -p <sdk_path>

3. mise à jour de la dépendance:

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

--dryrun: uniquement imprimer le résultat dans la console

--remote: vérifier la version dans jcenter et mavenCentral

--gradle: vérifier la version gradle

Voir https://github.com/Jintin/andle pour plus d'informations

Jintin
la source
uniquement pour les bibliothèques de support?
osrl
@osrl si vous ajoutez --remote ou -r, il analysera la version sur jcenter.
Jintin
0

Je faisais face à ce même problème et j'ai essayé la réponse https://stackoverflow.com/a/35371234/6412430

Ce qui a vraiment fonctionné pour moi sur Android Studio 3.4.1 était:

File -> Project Structure -> Dependencies

Une fois que vous avez atteint ce point, toutes les dépendances incluses dans votre projet ou module seront répertoriées. Ceux qui sont obsolètes seront soulignés et lorsque vous en sélectionnerez un, les détails de celui-ci seront affichés vous donnant les options pour mettre à jour la variable (si vous l'avez séparée de la déclaration) ou la dépendance.

Un peu tard mais c'est ce qui a fonctionné pour moi.

Jeremías Gersicich
la source
J'ai aussi trouvé ça. Étrange que quelqu'un ait marqué moins.
CoolMind
-1

Pour être mis à jour ou recommandé pour votre projet, la dépendance doit être identique à celle du projet Android

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

Lorsque vous atteignez l'onglet des dépendances Cliquez sur le +bouton qui est placé dans le coin supérieur droit de la fenêtre. Lorsque vous cliquez sur +Sélectionner Library Dependency, une nouvelle fenêtre de Choose Library Dependencyrecherche de votre dépendance s'ouvre dans la zone de recherche, toutes les dépendances Android répertoriées sont mises à jour.

Hemant Sharma
la source
Merci, mais cette liste contient également des bibliothèques que je n'utilise pas et parfois ne contient pas ce que j'utilise. Gson est aussi com.google.code.gson:gson:2.2.4en réalitécom.google.code.gson:gson:2.8.5
CoolMind
Parfois, les dépendances fonctionnent avec la version compatible de Gradle, veuillez vérifier si vous utilisez Gradle mis à jour dans votre niveau de projet Gradle
Hemant Sharma