在内置的Kotlin中不允许使用kotlin.sourceSets DSL来添加Kotlin源文件

移动开发 2026-07-12

我是尝试更新Gradle依赖并使用android.sourceSets DSL。我似乎找不出配置中出错的地方。我应该如何修改Gradle文件,以便不再使用kotlin.sorceSets DSL?

这是app模块的build.gradle.kts文件:

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.compose.compiler)
}

android {
    ...
    defaultConfig {
        ...
        ksp {
            arg("room.schemaLocation", "$projectDir/schemas")
        }
    }

    ...
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    // Add Kotlin source directories to AndroidSourceSet.kotlin
    sourceSets {
        named("main") {
            kotlin {
                directories += "additionalSourceDirectory/kotlin"

            }
        }
    }
}

kotlin {
    compilerOptions {
        languageVersion = org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0
        // Optional: Set jvmTarget
         jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_11
    }
}

...

而这是根项目的build.gradle.kts文件:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.compose.compiler) apply false

...
}

解决方案

参考 https://github.com/google/ksp/issues/2729

很可能需要在你的libs.versions.toml文件中把ksp设置为2.3.4及以上版本。
我最近把它更新到了:

[versions]
agp = "9.1.0"
kotlin = "2.3.10"
ksp = "2.3.6"
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章