“implementation deps.support.app_compat”中的“deps”是什么?

时间:2017-11-11 10:18:20

标签: android gradle build.gradle

我正在查看google示例中的新架构组件,我在其中找到了如下代码:

dependencies {
    // Support libraries
    implementation deps.support.app_compat
    implementation deps.support.v4
    implementation deps.support.design
    implementation deps.support.cardview

    // Architecture components
    implementation deps.lifecycle.runtime
    implementation deps.lifecycle.extensions
    annotationProcessor deps.lifecycle.compiler
    implementation deps.room.runtime
    annotationProcessor deps.room.compiler

    // Android Testing Support Library's runner and rules
    androidTestImplementation deps.atsl.runner
    androidTestImplementation deps.atsl.rules
    androidTestImplementation deps.room.testing
    androidTestImplementation deps.arch_core.testing

    // Espresso UI Testing
    androidTestImplementation deps.espresso.core
    androidTestImplementation deps.espresso.contrib
    androidTestImplementation deps.espresso.intents

    // Resolve conflicts between main and test APK:
    androidTestImplementation deps.support.annotations
    androidTestImplementation deps.support.v4
    androidTestImplementation deps.support.app_compat
    androidTestImplementation deps.support.design
}

我无法理解为什么他们编写了以deps.*开头的所有依赖项。任何人都可以帮我理解代码。提前致谢。 这是回购的link

2 个答案:

答案 0 :(得分:9)

depsMap类的实例,它在project实例上设置并在versions.gradle文件中定义。这个versions.gradle文件在根build.gradle脚本中依次为applied,因此deps可以在子项目中使用。

答案 1 :(得分:1)

添加@Opal建议。

deps是在项目级别定义的占位符。您可以在here

中找到它

对于Dagger2,deps在versions.gradle文件中定义如下,该文件比模块级别高出一步。

*def dagger = [:]
dagger.runtime = "com.google.dagger:dagger:$versions.dagger"
dagger.android = "com.google.dagger:dagger-android:$versions.dagger"
.....

deps.dagger = dagger*

Image if code not well formatted

这样,它有助于将相同的版本应用于项目的所有模块。 只有需要特定依赖关系的模块才能在build.gradle定义中声明它。