android - Gradle Kotlin DSL:在独特的地方定义 Android 构建工具版本
问题描述
我正在使用 Android Studio 4.0,并buildSrc
在多模块项目中添加了模块来管理依赖版本。在里面buildSrc
我有Dependencies
对象和Version
对象要在里面使用 kotlin-dsl
,build.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())
}
解决方案
您不能在 buildSrc/build.gradle.kts 文件中使用常量 PluginDependencies,因为在此阶段构建脚本不知道依赖于 buildSrc/src/main/kotlin/PluginDependencies.kt 的代码。buildSrc/build.gradle.kts 文件是第一个被构建的文件,然后是其余的。
这仍然是正确的,但您可以做的是在 buildSrc 中创建一个 buildSrc。我不知道,但目前发现了这个样本:
推荐阅读
- elasticsearch - Logstash .odx 文件输入
- shell - 如何编写 sbatch 来处理 slurm 中的多个作业
- html - 响应式 div 排序
- html - Angular 8:如何在单击行时切换多行并在单击 Angular Material Table 时单击单个按钮展开所有行?
- javascript - 调用 json 解析时出现异常
- python - 如何从python中的混合txt文件中读取数字
- java - 我想通过 junit 测试验证我的骆驼消费者应用程序是否引发了特定异常
- c++ - 如何获取在给定目录中创建的最新文件夹
- css - 伪元素在 Material-UI makeStyles React.js 中不起作用
- android - youtube data Api 观看视频是否需要任何配额?