Android编译依赖项 - Gradle Build

时间:2015-06-26 14:21:55

标签: android gradle android-gradle build.gradle

我的问题很简单,我不知道如何解决。

在gradle中编译库时,我使用下面显示的代码:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:cardview-v7:21.0.+'
    compile 'com.android.support:recyclerview-v7:21.0.+'
    compile 'com.android.support:design:22.2.+'
    compile 'com.android.support:appcompat-v7:22.2.+'
}

这给了我想要的东西,我没有任何问题。我猜测上面的代码确保在构建应用程序时编译每个依赖项的最新版本(因此在每个语句的末尾都是“+”符号)。但是,我在网上很多地方都看到过相同的代码行如下所示没有“+”符号:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:cardview-v7:21.0.0'
    compile 'com.android.support:recyclerview-v7:21.0.0'
    compile 'com.android.support:design:22.2.0'
    compile 'com.android.support:appcompat-v7:22.2.0'
}

没有明显的区别,两者都工作得很好。但作为一个有意为应用程序提供长期支持的开发人员,我应该使用哪些?带或不带附加“+”符号。 使用其中一个可能带来的好处或问题是什么?任何反馈都将受到高度赞赏。

3 个答案:

答案 0 :(得分:4)

使用 + ,Android Studio可以更新您在项目中使用的依赖项。

这可能是一个问题,因为您无法知道应用程序的特定版本中包含哪个版本。

拥有可重现的构建结果非常重要。

使用以下也存在一些差异:

compile 'com.android.support:appcompat-v7:22.2.+'
compile 'com.android.support:appcompat-v7:22.+'
compile 'com.android.support:appcompat-v7:+'

在第一种情况下,您只会更新次要更改(大多数情况下会修复错误)。在第二种情况下,您将更新maior relases。例如,从22.0.0和22.2.0有很多变化。 最后的案例是最危险的。在任何情况下都不要使用它。

答案 1 :(得分:0)

如果你使用+所以它每次检查更新,它将是破坏构建 在静态时,它为特定版本

提供依赖性

答案 2 :(得分:0)

实际上,+表示您让Android Studio在更新时使用未来版本的库。与此相反,不添加+意味着它将仅使用所提及的特定版本。 根据不同的情况使用那些+。像appcompat这样的东西非常稳定,所以你可能不想添加+。 像新发布的Android设计库这样的东西很好,新的,不稳定的和错误的,你会希望收到错误修正和更新。在这种情况下添加+。