【问题标题】:Android Studio - Add dependency to all modulesAndroid Studio - 向所有模块添加依赖项
【发布时间】:2015-12-09 11:19:38
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

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

在顶级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
}

这样,当你必须更新库时,你可以只更改顶层文件。

【讨论】:

  • 感谢您的解决方案!真的很有用!
【解决方案2】:

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

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、实现和注释。

【讨论】:

  • 它对我有帮助。谢谢!仅供参考:root build.gradle表示Android项目的build.gradle(其他为Module.
【解决方案3】:
  1. 首先您必须在 Android Studio(您当前的工作区)中添加图表库项目(模块) 文件 -> 导入模块
  2. 要在构建路径中添加库项目(模块),请单击 文件 -> 项目结构
  3. 在左侧单击 应用程序 -> 依赖项选项卡 -> 绿色 + 按钮 -> 模块依赖项 现在选择您已经添加的库项目。 有关更多详细信息,请参阅此link

【讨论】:

  • 我知道如何向我的项目添加依赖项。我想知道是否有可能(是的,我引用自己的话)add this somehow to the root build.gradle or do I have add to each project build.gradle the dependency?
  • 您必须为所有库添加依赖项
猜你喜欢
  • 2014-12-27
  • 1970-01-01
  • 2015-07-22
  • 2019-04-11
  • 2014-09-15
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 2017-07-06
相关资源
最近更新 更多