如何检查Gradle依赖项是否具有新版本


232

在Android Studio中,当我使用+版本号(例如com.android.support:recyclerview-v7:21.+)时,会收到“避免在版本号中使用+”的警告。当我使用特定的版本号时,我不能总是使用最新版本。我的项目中有很多依赖项。如何检查依赖项是否具有较新版本?是否有一个Android Studio插件-或类似的东西-在存在较新版本的依赖项时通知我?

编辑: Android Studio突出显示了过时的android支持库和Google Play服务。但这不适用于其他自定义库。

在此处输入图片说明


对于正在更新库的开发人员,请参阅:如何在Bintray中为新版本更新库?
Suragch

2
现在至少在Android 3.0中,自定义库的更新将显示与支持库的问题图像中相同的通知。
Suragch '17

@Suragch这不适合某些依赖在Android Studio中3.0.1为我工作
雷米

我们可以使用gradleplease.appspot.com检查新库的版本
Alex Kisel,

Answers:


187

现在,它作为Lint检查内置在Android Studio中。您可以在此处启用它:

设置>编辑器>检查>“可用的新库版本”

此检查的说明:

较新的库版本可用

该检测器与中央存储库进行检查,以查看是否存在可用于该项目所使用依赖项的更新版本。这类似于GradleDependency检查,这在Android SDK工具和库提供插口连接到每一次库,这使得它更灵活,但也有更新版本,但是这适用于任何MavenCentral的依赖,并检查慢。

由于速度变慢,这可能会导致我建议您定期手动运行它,而不要始终运行它。您可以通过以下方式做到这一点:

分析>“按名称运行检查”

然后搜索“可用的较新库版本”,然后在您的模块上运行它。

编辑:以上应仅适用于Android Studio 2.3。如果您使用的是旧版本(应更新),则可能会有所帮助:

请注意,您似乎必须先启用检查才能手动运行它-因此(从Android Studio 2.0 Beta 2开始),您需要在设置中找到检查,将其启用,然后按名称运行,然后再次将其禁用(恢复以前的效果)。


4
我不知道我做错了什么,但对我
没用

1
对我来说也是一样,领域不在MavenCentral上。您的改装版本是否定义如下?我的也是,也找不到它 def okhttpVersion = '2.7.2' compile "com.squareup.okhttp:okhttp:$okhttpVersion"
osrl 2016年

1
找不到具有定义的版本字符串的字符串。它能够找到com.squareup.okhttp:okhttp:2.7.2。也在2.0.0-beta4
osrl 2016年

2
这会在“检查”选项卡中显示可用的更新,但不会在build.gradle中将其突出显示为警告。我还没有找到可以做到这一点的解决方案。
Tiago

3
必须返回此答案以报告它仅适用于MavenCentral依赖项。这意味着来自Jitpack或其他来源的存储库不会自动更新。获取所有依赖关系的最新版本的正确方法是此答案[ stackoverflow.com/questions/28538824/…(在此)
Ray Li

274

更新(05/23/18):

较新版本的Android Studio在“项目结构”对话框中不显示版本更新。相反,亚当的答案是适用于Android Studio 3+的正确答案

分析>“按名称运行检查”

然后搜索“ Newer Library Versions Available

以前的方法:

截至Android Studio 2.2,新Project Structure对话框将显示您的应用程序正在使用的依赖项列表,以及本地和远程存储库中的可用更新。

  • 通过转到Android Studio > Settings > Build, Execution, Deployment > Gradle > Experimental并检查Use new Project Structure dialog(感谢@jessehensold)来激活它
  • 然后转到 File > Project Structure > Messages

在此处输入图片说明

对于旧版本的Android Studio,请参见下面的其他响应。


1
关于编辑;这是关于android-studio的,因为我正在寻找一个Android Studio插件。感谢您的回答,但我已经看过了。
osrl 2015年

11
Android Studio中不再存在此功能(使用beta 2)。
贡萨洛

8
我必须进入“首选项”>“构建,执行,部署”>“
等级

1
必须转到“依赖项”选项卡以启用“应用”按钮。一些错误?
Mateusz Kaflowski

2
我在Android Studio 2.3上尝试了此操作,但对话框的Dependencies选项卡Project Structure未找到项目的任何依赖项。
jakub.g

58

除了Android Studio的内置功能外,还有一个不错的gradle插件,叫做Gradle Versions Plugin,它可以完全满足您的要求,它具有简单的gradle扩展功能,因此不必绑定到任何特定的IDE,因此对于使用Gradle的任何项目都很有用。

Gradle版本插件可以创建人类可读的纯文本格式的报告,也可以将其转储为JSON或XML以进行自动处理。

一旦添加到gradle文件中,标准用法将类似于:

> ./gradlew dependencyUpdates

这将生成项目依赖项报告,如下所示:

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

有关广泛的使用示例,请参阅docs


注意:截至撰写此答案(2017-01)时,高于0.17.0的版本将以计划文本格式产生更多输出,包括 项目URL,从而使整个输出膨胀。如果您认为我没用,请坚持使用0.17.0版或使用能够解决此问题的版本(如果存在该版本;)


3
太棒了!在这里为普通的Java项目寻找它。没有Lint的Android特异性的不错的通用解决方案。
TWiStErRob '17

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.运行此程序时收到错误消息。
水果


2
“可用的较新库版本”方法不起作用,但这是完美的!(我为lib版本使用了多个带有变量的gradle文件)
norbDEV

您可以添加该插件的图片吗?我没有在列表中找到它。
CoolMind

14

弃用-请参阅有关现代方式的答复

我在下面介绍的工具不适用于新版本的Android Studio / Gradle,并且其作者不再维护该工具(截至2016年10月30日)。因此,除非使用旧版本的Android Studio,否则应使用接受的答案中提供的解决方案


截至2016年1月,有一个Android Studio插件可以执行类似的操作,称为Dependencies Version Checker,其源代码可以在GitHub找到

可以通过内置界面(设置>插件>浏览存储库...)添加它:

本机界面中的外观

安装并重新启动后,UI中将显示以下选项卡:

重新启动后显示的新用户界面标签。

build.gradle然后将相关内容粘贴到VersionChecker面板的左侧,然后Version Check按下按钮。结果是出现在右侧的表,其中包括粘贴的脚本中使用的库的最新版本(如上图所示)。


即使这是我最初的目的,也无法按预期工作。我已经在Github仓库中打开了一个关于它的问题。github.com/takuaraki/DependenciesVersionChecker/issues/5
osrl

当我单击“检查版本”时,我尝试了此操作并得到了一个通用的错误/失败消息提示框
Greg Ennis

@GregEnnis最新版本的插件存在问题。使用较旧的版本还是等待更新...
Dev-iL

11

请参阅文件>项目结构,然后单击“建议”。我知道,这个解决方案是由Hemant Sharma和JeremíasGersicich提出的,但是Android Studio已在3.4.1版本中对其进行了更改。

在此处输入图片说明


其他人得到这个屏幕只是在android studio 3.5上为空吗?
Nicola Beghin

@NicolaBeghin,我刚刚检查了一个空项目,得到了4条建议。是的,7月有一个术语,其中没有显示建议,但他们修复了该错误。我想这是Google服务器的问题,有时可能会发生。
CoolMind

不支持Gradle KTS
弗拉德

2

对于支持库(com.android.support)依赖项,还有一个更好的选择-andle

它也可以查询jcenter和maven center。

简单的三步即可一次更新所有项目。

1.安装:

    $ sudo pip install andle

2.设置sdk:

    $ andle setsdk -p <sdk_path>

3.更新权限:

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

--dryrun:仅在控制台中打印结果

--remote:在jcenter和mavenCentral中检查版本

--gradle:检查gradle版本

参见https://github.com/Jintin/andle了解更多信息


仅用于支持库?
osrl

@osrl如果添加--remote或-r,它将解析jcenter上的版本。

0

我正在处理同样的问题,并尝试了答案https://stackoverflow.com/a/35371234/6412430

在Android Studio 3.4.1上对我真正起作用的是:

File -> Project Structure -> Dependencies

一旦达到这一点,将列出项目或模块中包含的所有依赖项。过时的将突出显示,当您选择一个时,将显示其详细信息,从而为您提供更新变量(如果您将其与声明分开)或依赖项的选项。

有点晚了,但这对我有用。


我也发现这种方式。奇怪的是有人标记为负。
CoolMind

-1

要更新或推荐给您的项目依赖项应与android项目相同

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

当您到达“依赖项”选项卡时,单击位于+窗口右上角的按钮。当您单击“ +选择”时 Library Dependency,它将Choose Library Dependency在搜索框中打开“ 搜索依赖项的新窗口”,所有列出的Android依赖项都会更新。


谢谢,但是此列表还包含我不使用的库,有时不包含我使用的库。com.google.code.gson:gson:2.2.4com.google.code.gson:gson:2.8.5
格森(

有时依赖项可以与兼容的gradle版本一起使用,请检查您是否在项目级别的gradle中使用了更新的gradle
Hemant Sharma
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.