我已阅读大量帖子,例如this one,但他们只是告诉您不应该将依赖项添加到项目根build.gradle
,我知道。
我的情况是:我有很多模块都需要相同的库。所有这些,所以我需要将它们全部配置为具有相同的库。是否有可能以某种方式将其添加到根build.gradle
或者我已将依赖项添加到每个项目build.gradle
?
答案 0 :(得分:14)
你可以这样做。
这并不意味着为所有模块添加依赖项,但通过这种方式,您可以集中依赖项。
在顶级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
}
通过这种方式,当您必须更新库时,您只需更改顶级文件。
答案 1 :(得分: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,实现和注释。
答案 2 :(得分:0)