Android Studio - 向所有模块添加依赖项

Posted

技术标签:

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

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

【问题讨论】:

可以使用子项目proandroiddev.com/… 【参考方案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】:
    首先您必须在 Android Studio(您当前的工作区)中添加图表库项目(模块) 文件 -> 导入模块 要在构建路径中添加库项目(模块),请单击 文件 -> 项目结构 在左侧单击 应用程序 -> 依赖项选项卡 -> 绿色 + 按钮 -> 模块依赖项 现在选择您已经添加的库项目。 有关更多详细信息,请参阅此link

【讨论】:

我知道如何向我的项目添加依赖项。我想知道是否有可能(是的,我引用自己的话)add this somehow to the root build.gradle or do I have add to each project build.gradle the dependency? 您必须为所有库添加依赖项

以上是关于Android Studio - 向所有模块添加依赖项的主要内容,如果未能解决你的问题,请参考以下文章

为啥 lib 模块不能在 android studio 中包含第三个 lib

Android Studio - Gradle 总是构建所有模块,而不仅仅是我运行的模块

如何向Android Studio里导入从Github上面下载的Project?

Android Studio:无法向项目添加新类或任何文件

在 Android Studio 中向列表视图添加自定义行

Android Studio不断向GitHub添加其他文件