迁移至Kotlin 2.0后KSP部署报错:api-version大于language-version
解决Kotlin 2.0迁移后KSP编译报错:-api-version (2.0) cannot be greater than -language-version (1.9)
报错信息
> Task :app:kspDebugKotlin FAILED e: -api-version (2.0) cannot be greater than -language-version (1.9)
问题分析
该报错源于KSP插件未正确继承Kotlin 2.0的语言版本配置,或依赖的编译工具(如Hilt)与Kotlin 2.0不兼容,导致KSP仍使用旧版Kotlin语言版本参数进行编译。
解决步骤
调整KSP编译器参数
在模块build.gradle.kts中为KSP显式指定语言版本和API版本,确保与项目Kotlin版本一致:ksp { arg("language-version", "2.0") arg("api-version", "2.0") }升级Hilt至兼容Kotlin 2.0的版本
当前使用的Hilt 2.51.1不支持Kotlin 2.0,需升级到2.52及以上版本。修改libs.versions.toml:[versions] hiltAndroid = "2.52" hiltAndroidCompiler = "2.52"移除重复插件配置
模块build.gradle.kts中重复应用了kotlin-android插件,移除重复项避免配置冲突:plugins { alias(libs.plugins.androidApplication) alias(libs.plugins.jetbrainsKotlinAndroid) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.kotlin.ksp) alias(libs.plugins.compose.compiler) id("dagger.hilt.android.plugin") id("kotlin-parcelize") // 移除该行:id("kotlin-android") }统一Kotlin编译器配置
将Kotlin版本配置统一到android.kotlinOptions中,确保AGP和KSP都能读取到正确参数:android { // ...其他配置 kotlinOptions { jvmTarget = JvmTarget.JVM_19.target apiVersion = "2.0" languageVersion = "2.0" } }清理缓存并重新编译
执行以下操作彻底清理缓存后重新同步编译:- 点击Android Studio菜单
File -> Invalidate Caches... -> Invalidate and Restart - 删除项目根目录的
.gradle、build文件夹及模块下的build文件夹 - 运行命令:
./gradlew clean assembleDebug
- 点击Android Studio菜单
内容的提问来源于stack exchange,提问作者Nikolay Ch
相关产品推荐
相关产品推荐

