首页 > 解决方案 > Gradle Kotlin DSL:在独特的地方定义 Android 构建工具版本

问题描述

我正在使用 Android Studio 4.0,并buildSrc在多模块项目中添加了模块来管理依赖版本。在里面buildSrc我有Dependencies对象和Version对象要在里面使用 kotlin-dslbuild.gradle.kts问题是我无法访问常量对象 gradle.kts,我有 2 个版本,com.android.tools.build:gradle:4.0.0我需要这个依赖项用于我的自定义插件,我怎么能只有一个版本的 buildtools?

//Dependencies.kt
object PluginDependencies {
 const val buildTools = "com.android.tools.build:gradle:${Versions.buildTools}"
}

//Versions.kt
object Versions {
const val buildTools = "4.0.0" 
}

我有这个build.gradle.kts

plugins {
    `kotlin-dsl`
}
gradlePlugin {
    plugins {
        register("CustomPlugin") {
            id = "customPlugin"
            implementationClass = "CustomPlugin"
        }
    }
}
repositories {
    mavenCentral()
    google()
    jcenter()
}

dependencies {
    // this cuase a compile error -> implementation("com.android.tools.build:gradle:${constants.Versions.buildTools}")
    implementation("com.android.tools.build:gradle:4.0.0")
    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72")

    /* Depend on the default Gradle API's since we want to build a custom plugin */
    implementation(gradleApi())
    implementation(localGroovy())
}

标签: androidandroid-studiokotlingradlegradle-kotlin-dsl

解决方案


您不能在 buildSrc/build.gradle.kts 文件中使用常量 PluginDependencies,因为在此阶段构建脚本不知道依赖于 buildSrc/src/main/kotlin/PluginDependencies.kt 的代码。buildSrc/build.gradle.kts 文件是第一个被构建的文件,然后是其余的。

这仍然是正确的,但您可以做的是在 buildSrc 中创建一个 buildSrc。我不知道,但目前发现了这个样本:

https://github.com/badoo/Reaktive/


推荐阅读