【问题标题】:Gradle dependencies updateGradle 依赖更新
【发布时间】:2026-02-01 10:55:01
【问题描述】:

在 Android Studio 中使用 Gradle 的优点之一是它有助于进行依赖管理。因此,如果我在 build.gradle 文件中使用了特定版本的库, 那么一旦更高版本可用,我将如何强制它更新依赖版本?

我的 build.gradle 中的一些依赖项被指定为

dependencies {
    compile project(':facebookSDK')
    compile files('libs/picasso-2.1.1.jar')
    compile files('libs/crouton-1.8.1.jar')
}

【问题讨论】:

    标签: android gradle android-studio android-gradle-plugin build.gradle


    【解决方案1】:
    • 如果需要,您可以将部分版本号替换为通配符(例如 2.3.+)。
    • 在这种情况下,这将导致 Gradle 自动更新到库的新补丁级别
    • 一些开发人员不赞成这种方法,因为虽然它很方便它确实会降低您重现构建的能力(例如,您需要重新编译一些旧分支你的代码,现在你不知道你当时使用的是什么版本的工件)。

    我发现Gradle, please 是我的答案。

    • 轻松获取最新的android库gradle编译语句。

    【讨论】:

      【解决方案2】:

      在 Android Studio 中使用 Gradle 的优点之一是它有助于进行依赖管理。

      不是你使用它的方式。

      如果我在 build.gradle 文件中使用了特定版本的库,那么一旦更高版本可用,我将如何强制它更新依赖版本?

      在您的情况下,您将下载新的 JAR,将它们放入 libs/,然后更新您的 build.gradle 以匹配。

      您的首选方法是删除这些 JAR 并将您的两个 compile files 语句替换为从 Maven Central 或其他工件存储库中提取依赖项的语句。您可以通过Gradle, please 站点找到流行的开源库的正确声明。

      在你的情况下,你会使用:

      compile 'com.squareup.picasso:picasso:2.3.3'
      compile 'de.keyboardsurfer.android.widget:crouton:1.8.5'
      

      这些将要求您还拥有一个 repositories 闭包作为您的 dependencies 闭包的对等点:

      repositories {
          mavenCentral()
      }
      

      这可能已经存在。

      这些 compile 语句仍将您固定到这些库的特定版本,但移动到新版本将是更新compile 语句的简单问题,Gradle 将在您的下一个构建中删除新的依赖项.

      如果需要,您可以将部分版本号替换为通配符(例如,2.3.+)。在这种情况下,这将导致 Gradle 自动更新到库的新补丁级别。一些开发人员不赞成这种方法,因为它虽然方便,但确实降低了您重现构建的能力(例如,您需要重新编译代码的一些旧分支,而现在您不知道是什么版本你当时使用的神器)。

      【讨论】:

      • 完美答案(一如既往的@CommonsWare)。但是最近,我的 gradle 并没有突出显示存储库中有新版本的库,这对我来说是一个强大的功能。
      • @wendigo:我不知道 Gradle 曾经“突出显示”比您要求的更新的库。如果你使用通配符,它​​会自动抓取它们;如果您不使用通配符,它​​会忽略它们。 Gradle 有一个插件,可以报告依赖项的可用更新,但我忘记了在哪里看到的。
      • 我也会添加这个答案:*.com/a/35371234/2057809 让 gradle 进行依赖项更新很酷,但是当它还可以自动检测哪些依赖项需要更新时,它就更有用了。
      【解决方案3】:

      当您从本地项目编译文件时,我认为您不能自动编译新的单独 jar 版本(如果可用)。除了编译单个文件,您可以做的是:

      compile fileTree(dir: 'libs', include: '*.jar')

      这将编译 libs 目录中的所有 jar,因此您将始终拥有最新版本。

      您正在使用的两个库都可以从 mavencentral 编译为依赖项。

      compile 'de.keyboardsurfer.android.widget:crouton:1.8.5'
      compile 'com.squareup.picasso:picasso:2.3.3'
      

      如果您想确保获得最新版本,请使用加号代替版本号。这取决于你想对这个开放程度..所以

      compile 'de.keyboardsurfer.android.widget:crouton:1.+'
      compile 'com.squareup.picasso:picasso:2.+'
      

      将在 1. 或 2. 版本控制周期下为您提供最新版本...

      【讨论】:

      • 感谢您的回答。 @CommonsWare 已经给出了完美的答案。
      • 我不建议这样做:对依赖项进行自动更新意味着放松控制当前安装的版本的简单方法。对于更正更新,可以,但对于小更新,这有点不安全。
      • @Aldo 如果您阅读了答案,我不建议您始终使用最新的依赖项,我只是告知如果需要的话,这是可能的。这正确回答了问题,不值得被否决。
      • @domji84 不是很明显 :( 但我同意你的观点,我的投票有点苛刻,我很抱歉。我编辑了你的答案以在之后提出新的投票: )
      最近更新 更多