美文网首页
Kotlin + buildSrc:更好的管理Gadle依赖

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

作者: 赵宇_阿特奇 | 来源:发表于2023-10-20 11:07 被阅读0次

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

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

    • 使用Google推荐的“ext”
    • Kotlin + buildSrc

    Google推荐:使用gradle的extra属性

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

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

    ext {
      versions = [
        multidex: "2.0.1"
      ]
      Libs = [
        multidex: "androidx.multidex:multidex:${Versions.multidex}"
      ]
    }
    

    Root-level build.gradle

    apply from: this.rootProject.file('config.gradle')
    

    module_a/build.gradle

    implementation rootProject.Libs.multidex
    

    module_b/build.gradle

    implementation rootProject.Libs.multidex
    

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

    Kotlin + buildSrc == Android Studio Autocomplete

    您需要在您的项目里创建一个buildSrc模块,然后编写kotlin代码来管理依赖库,使得IDE支持自动补全。

    Gradle文档中有这样一段话:

    当你运行Gradle时,它会检查项目中是否存在一个名为buildSrc的目录。然后Gradle会自动编译并测试这段代码,并将其放入构建脚本的类路径中。您不需要提供任何进一步的操作提示

    你只需要在buildSrc module中新建两个文件:

    • build.gradle.kts
    • 编写Kotlin代码的文件 (本文中是指Dependencies.kt)
    //buildSrc/build.gradle.kts
    //
    plugins {
        `kotlin-dsl`
    }
    repositories {
        mavenCentral()
    }
    
    //buildSrc/src/main/java/Dependencies.kt
    //
    object Versions {
        val multidex = "2.0.1"
    }
    object Libs {
        val multidex = "androidx.multidex:multidex:${Versions.multidex}"
    }
    

    经过上面两个步骤后,执行一次Gradle Sync任务,现在我们可以在Android Studio中访问Dependencies.kt中任何值了。

    看起来结果与“ext”非常相似,但是它支持自动补全和单击跳转。
    module_a/build.gradle

    implementation(Libs.multidex)
    

    module_b/build.gradle

    implementation(Libs.multidex)
    

    结束语

    我强烈推荐您使用Kotlin + buildSrc的方法。它支持自动补全和单击跳转,使得您无需在文件之间手动来回切换,方便你更好的管理Gradle依赖。

    动手实践:

    新建的module名称必须为buildSrc

    一开始我按照作者原文的描述,在Android Studio里右键单击项目,New 出一个名为buildSrcAndroid Library,试了好几遍都提示Gradle sync failed: Plugin with id 'com.android.library' not found的错误。

    后来我参考这里的做法,手动创建了buildSrc这个模块。步骤如下:

    • 1、在项目根目录下新建一个名为buildSrc的文件夹(与项目里的app文件夹同级)。

    • 2、在buildSrc文件夹里创建名为build.gradle.kts的文件,文件内容参考之前的描述。

    • 3、在buildSrc文件夹里创建src/main/java文件夹,并在该文件夹下创建Dependencies.kt文件,文件内容参考之前的描述。

    build一遍你的项目,然后重启你的Android Studio,项目里就会多出一个名为buildSrc的module。

    相关文章

      网友评论

          本文标题:Kotlin + buildSrc:更好的管理Gadle依赖

          本文链接:https://www.haomeiwen.com/subject/wrjkidtx.html