【问题标题】:Unresolved references of buildSrc kotlin constants after migration to gradle kotlin dsl迁移到 gradle kotlin dsl 后未解决的 buildSrc kotlin 常量引用
【发布时间】:2018-10-28 10:38:15
【问题描述】:

我正在尝试将我的 android 项目迁移到使用 gradle kotlin dsl,用 build.gradle.kts 文件替换所有 build.gradle 文件并在那里使用 kotlin。之前,我曾经有一个 kotlin 文件,其中包含带有库和版本常量的对象元素(在 buildSrc -> src -> main -> kotlin 中),例如:

object Versions {
    const val anyLibVersion = "1.0.0"
}

object Lib {
    const val anyLib = "x:y:${Versions.anyLibVersion}"
}

在 build.gradle 文件中,我可以毫无问题地访问这些常量,但是一旦我将它们切换到 build.gradle.kts,它就无法再解析它们了。对此有何解释?

【问题讨论】:

  • 这只是android studio的问题,还是命令行构建也失败了?
  • 在重新安装 android studio 后现在可以工作了

标签: android build.gradle gradle-kotlin-dsl


【解决方案1】:

你通常会关注buildSrc/build.gradle.kts

import org.gradle.kotlin.dsl.`kotlin-dsl`

repositories {
    jcenter()
}

plugins {
    `kotlin-dsl`
}

然后在buildSrc/src/main/java/Dependencies.kt 中输入您的版本/依赖项

【讨论】:

  • 我的 buildSrc/build.gradle.kts 看起来完全一样。所以你说的错误是我使用的是 kotlin 源文件夹而不是 java 源文件夹?实际上我以前有过,但认为使用 kotlin 源文件夹更合适。它不应该同时使用吗?
  • 它当然适用于java....还没有尝试过使用kotlin....过一段时间会在这里测试看看是否有效(或者例如你是否可能需要在 gradle 中显式设置 sourceSets 才能使用)
  • 尝试在此处使用 kotlin 而不是 java 作为文件夹名称,看起来工作正常。
  • 嗯,那么我的项目中肯定有任何问题。感谢您的努力!
  • 在重新安装 android studio 后现在可以工作了
【解决方案2】:

不将 buildSrc 目录视为 settings.gradle.kts (.) 中的模块


预编译脚本插件。

那么对于 Kotlin DSL 中的 apply from,您应该使用 plugins {}

build.gradle.kts (X:buildSrc)

plugins {
    `java-gradle-plugin`
    `kotlin-dsl`
    `kotlin-dsl-precompiled-script-plugins`
}

repositories {
    mavenCentral()
}

buildSrc/src/main/kotlin/core-library.gradle.kts

注意:apply(from = "path.gradle.kts" 对我不起作用

plugins {
    id("com.android.library")
    id("kotlin-android")
    id("kotlin-parcelize")
}

feature.gradle.kts

plugins {
    id("core-library")
}

GL

【讨论】:

    【解决方案3】:

    您可以通过完全删除 android {} 块、执行 Gradle 同步,然后重新添加代码块来修复它。

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多