未解析的参考:将 gradle 转换为 gradle.kts 时的 ext

Ely*_*lye 11 android gradle gradle-kotlin-dsl

默认情况下,当我从 Android Studio 创建撰写应用程序时,它会在我的根项目中提供ext如下信息build.gradle

buildscript {
    ext {
        compose_version = '1.0.0'
    }
    repositories {
        google()
        mavenCentral()
    }
}
Run Code Online (Sandbox Code Playgroud)

当我将其更改为 时build.gradle.kts,它会抱怨

Unresolved reference: ext
Unresolved reference: compose_version
Too many characters in a character literal ''1.0.0''
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

Ely*_*lye 8

我用

buildscript {
    extra.apply{
        set("compose_version", "1.0.0")
    }
    repositories {
        google()
        mavenCentral()
    }
Run Code Online (Sandbox Code Playgroud)

要从其他gradle文件访问它,我需要显式设置为变量

val composeVersion = rootProject.extra.get("compose_version") as String
Run Code Online (Sandbox Code Playgroud)

然后我可以像这样使用它

composeOptions {
    kotlinCompilerExtensionVersion = composeVersion
}
Run Code Online (Sandbox Code Playgroud)

dependencies {
   implementation ("androidx.compose.ui:ui:$composeVersion")
}
Run Code Online (Sandbox Code Playgroud)