Android Studio - 添加对所有模块的依赖

Android Studio - Add dependency to all modules

我已经阅读了很多像 this one 这样的帖子,但他们只告诉你不应该向项目根 build.gradle 添加依赖项,我知道这一点。
我的情况是:我有很多模块都需要同一个库。所有这些,所以我需要将它们全部配置为具有相同的库。是否可以以某种方式将其添加到根目录 build.gradle 或者我已将依赖项添加到每个项目 build.gradle

  1. 首先,您必须在 Android Studio(您当前的工作区)中添加图表库项目(模块) 文件 -> 导入模块
  2. 要在构建路径中添加库项目(模块),请单击 文件 -> 项目结构
  3. 在左侧点击 app -> Dependencies 选项卡 -> green + button -> Module dependency 现在 select 您已经添加的库项目。 有关详细信息,请参阅此 link

你可以这样做。
这并不意味着为所有模块添加一个依赖项,但是通过这种方式你可以集中一个依赖项。

在顶级build.gradle

    ext {
        //Version
        supportLibrary = '23.0.1'

        //Support Libraries dependencies
        supportDependencies = [
                appCompat     : "com.android.support:appcompat-v7:${supportLibrary}",
                design        : "com.android.support:design:${supportLibrary}",
        ]
    }

在每个模块中添加 build.gradle:

dependencies {
    //......
    compile supportDependencies.appCompat
    compile supportDependencies.design
}

这样,当你需要更新库时,只需更改顶层文件即可。

我知道这个问题有点老了,但我开始使用它,如果您不关心将哪些库注入到您的模块中,我认为它会更干净。

root build.gradle

ext {
    commonDependencies = [
            // Layout Libraries
            constraintLayoutApi     : "androidx.constraintlayout:constraintlayout:$constraintlayout_version",
            materialApi             : "com.google.android.material:material:$material_version",
            flexboxApi              : "com.google.android:flexbox:$flexbox_version",

            // Image library (Picasso is alternative)
            glideImpl               : "com.github.bumptech.glide:glide:$glide_version",
            glideCompilerAnno       : "com.github.bumptech.glide:compiler:$glide_version",

            // Network library (Volley is alternative)
            retrofitImpl            : "com.squareup.retrofit2:retrofit:$retrofit_version",
            retrofitJacksonImpl     : "com.squareup.retrofit2:converter-jackson:$retrofit_version",
            retrofitScalarsImpl     : "com.squareup.retrofit2:converter-scalars:$retrofit_version",
            retrofitJava8Impl       : "com.squareup.retrofit2:converter-java8:$retrofit_version",

            // Dependency Injection
            daggerImpl              : "com.google.dagger:dagger:$dagger_version",
            daggerCompilerAnno      : "com.google.dagger:dagger-compiler:$dagger_version",
            // we add this so we can use the android support libraries
            daggerAndroidSupportImpl: "com.google.dagger:dagger-android-support:$dagger_version",
            daggerProcessorAnno     : "com.google.dagger:dagger-android-processor:$dagger_version"
    ]
}

在应用中 build.gradle

dependencies {
    api "androidx.appcompat:appcompat:$app_compact_version"
    api "com.google.android.gms:play-services-auth:$play_service_version"

    commonDependencies.each { key, value ->
        if (key.endsWith('Anno')) {
            annotationProcessor value
        } else if (key.endsWith('Impl')) {
            implementation value
        } else if (key.endsWith('Api')) {
            api value
        }
    }
}

如您所见,我正在检查根 gradle 文件中密钥的后缀 API、实现和注释。