Kotlin + buildSrc:更好的管理Gadle依赖!

Kotlin + buildSrc:更好的管理Gadle依赖!

为了充分利用Android Plugin for Gradle 3.0+的优点,将Android项目拆分成多个module的做法越来越常见。然而,随着module数量的增多,我们很快就会遇到依赖管理的混乱问题。

管理Gradle依赖的三种不同方法:

  • 手动管理
  • 使用Google推荐的“ext”
  • Kotlin + buildSrc

1、手动管理

这是一种大多数人在采用的管理依赖的方法,但每次升级依赖库时都需要做大量的手动更改。

module_a/build.gradle
implementation "com.android.support:support-annotations:27.0.2"
implementation "com.android.support:appcompat-v7:27.0.2"
implementation "com.squareup.retrofit2:retrofit:2.3.0"
implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
implementation "io.reactivex.rxjava2:rxjava:2.1.9"
module_b/build.gradle
implementation "com.android.support:support-annotations:27.0.2"
implementation "com.android.support:appcompat-v7:27.0.2"
implementation "com.squareup.retrofit2:retrofit:2.3.0"
implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
implementation "io.reactivex.rxjava2:rxjava:2.1.9"

这里存在许多重复的配置,而且当你的项目有很多module时很难管理依赖库的版本更新。

Google推荐:使用gradle的extra属性

Google在Android官方文档中推荐这种管理依赖的方法。许多项目例如ButterKnifePicasso等都在使用这种方法。

此方法非常适用于更新support library的版本,因为每个support library都具有相同的版本号,你只需要在一个地方更改它就行了。Retrofit等其它第三方库也是如此。

Root-level build.gradle
ext {
  versions = [
    support_lib: "27.0.2",
    retrofit: "2.3.0",
    rxjava: "2.1.9"
  ]
  libs = [
    support_annotations: "com.android.support:support-annotations:${versions.support_lib}",
    support_appcompat_v7: "com.android.support:appcompat-v7:${versions.support_lib}",
    retrofit :"com.squareup.retrofit2:retrofit:${versions.retrofit}",
    retrofit_rxjava_adapter: "com.squareup.retrofit2:adapter-rxjava2:${versions.retrofit}",
    rxjava: "io.reactivex.rxjava2:rxjava:${versions.rxjava}"
  ]
}
module_a/build.gradle
implementation libs.support_annotations
implementation libs.support_appcompat_v7
implementation libs.retrofit
implementation libs.retrofit_rxjava_adapter
implementation libs.rxjava
module_b/build.gradle
implementation libs.support_annotations
implementation libs.support_appcompat_v7
implementation libs.retrofit
implementation libs.retrofit_rxjava_adapter
implementation libs.rxjava

这种方法是手动管理的一大进步,但是缺少IDE的支持,更准确的说是在更新依赖库的时候IDE不能自动补全。

Kotlin + buildSrc == Android Studio Autocomplete

上一篇:解压缩文件,删除文件夹下的文件


下一篇:用NFS挂载根文件系统