You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将build.gradle转为KTS时出现‘extra’属性未知错误

解决Gradle Kotlin Script中buildscript.ext转换的错误

问题场景

将Groovy版本的根项目build.gradle转换为Kotlin Script格式时,原Groovy代码中的buildscript.ext块转换后执行报错:

A problem occurred evaluating root project 'Sage'.
Could not get unknown property 'extra' for object of type org.gradle.api.internal.initialization.DefaultScriptHandler.

原Groovy代码:

buildscript {
    ext {
        compose_version = '1.2.0'
    }
}
plugins {
    id("com.android.application") version "7.4.0" apply false
    id("com.android.library") version "7.4.0" apply false
    id("org.jetbrains.kotlin.android") version "1.7.0" apply false
}

错误的Kotlin Script代码:

buildscript {
    extra.apply{
        set("compose_version", "1.2.0")
    }
}

解决方案

在Kotlin Script的buildscript块中,不能用extra.apply{}的写法,正确设置扩展属性的方式是直接通过下标赋值或set()方法调用extra属性。完整的正确转换代码如下:

buildscript {
    // 方式1:下标赋值(推荐,更简洁)
    extra["compose_version"] = "1.2.0"
    
    // 方式2:调用set方法
    // extra.set("compose_version", "1.2.0")
}

plugins {
    id("com.android.application") version "7.4.0" apply false
    id("com.android.library") version "7.4.0" apply false
    id("org.jetbrains.kotlin.android") version "1.7.0" apply false
}

原因说明

在Gradle Kotlin Script的buildscript上下文里,extra是ScriptHandler的属性,直接通过extra[key] = value或extra.set(key, value)即可完成扩展属性的设置,不需要用apply块包裹,之前的写法会导致Gradle无法识别extra属性从而抛出错误。

内容的提问来源于stack exchange,提问作者SageJustus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:13:33