Android 如何管理和引用特定的依赖项库版本?

Android 如何管理和引用特定的依赖项库版本?,android,android-studio,gradle,android-gradle-plugin,build.gradle,Android,Android Studio,Gradle,Android Gradle Plugin,Build.gradle,我的根build.gradle如下所示: ... ext{ buildToolsVersion = '23.2.1' } ... dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:${rootProject.ext.buildToolsVers

我的根
build.gradle
如下所示:

...
ext{
  buildToolsVersion = '23.2.1'
}
...
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:${rootProject.ext.buildToolsVersion}'
    compile 'com.android.support:design:${rootProject.ext.buildToolsVersion}'
}
为什么我不能像这样管理我的Android支持库版本:

...
ext{
  buildToolsVersion = '23.2.1'
}
...
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:${rootProject.ext.buildToolsVersion}'
    compile 'com.android.support:design:${rootProject.ext.buildToolsVersion}'
}
${}
在Groovy中工作,为什么它在Gradle中不工作?

使用:

根目录/build.gradle
中:

ext {
    //Version
    supportLibrary = '23.2.1'

    //Support Libraries dependencies
    supportDependencies = [
            design           :         "com.android.support:design:${supportLibrary}",
            recyclerView     :         "com.android.support:recyclerview-v7:${supportLibrary}",
            cardView         :         "com.android.support:cardview-v7:${supportLibrary}",
            appCompat        :         "com.android.support:appcompat-v7:${supportLibrary}",
            supportAnnotation:         "com.android.support:support-annotations:${supportLibrary}",
    ]
}
dependencies {
    //......
    compile supportDependencies.appCompat
    compile supportDependencies.design
}
模块/build.gradle中

ext {
    //Version
    supportLibrary = '23.2.1'

    //Support Libraries dependencies
    supportDependencies = [
            design           :         "com.android.support:design:${supportLibrary}",
            recyclerView     :         "com.android.support:recyclerview-v7:${supportLibrary}",
            cardView         :         "com.android.support:cardview-v7:${supportLibrary}",
            appCompat        :         "com.android.support:appcompat-v7:${supportLibrary}",
            supportAnnotation:         "com.android.support:support-annotations:${supportLibrary}",
    ]
}
dependencies {
    //......
    compile supportDependencies.appCompat
    compile supportDependencies.design
}
我的错。
'com.android.support:appcompat-v7:${rootProject.ext.buildToolsVersion}

等于
“com.android.support:appcompat-v7:\${rootProject.ext.buildToolsVersion}”


所以应该是
“com.android.support:appcompat-v7:${rootProject.ext.buildToolsVersion}”
加上双引号

这是我的错,你的解决方案很棒。我喜欢将支持库捆绑在一个数组中的想法。有没有一种方法可以在Gradle中编写一个循环来编译所有这些循环,而不需要单独的
compile
语句?很好的解决方案!!但是,我们如何检查是否有更新版本的lib?您可以编辑原始问题,而不必发布带有对您自己问题的更正的答案。如果您关心管理各种依赖项的更新,您可以在此处看到我的问题:@Ben Manes有一个奇妙的解决方案。另外,如果你在我的问题的评论中读到,他也提出了一种构建依赖关系的巧妙方法。