Android Kotlin集成Room与KSP时Gradle同步及构建失败求助
解决KSP与Room配置引发的构建错误:找不到getChangedFiles方法
核心问题分析
- Room依赖版本不一致:Room的runtime和compiler版本必须严格匹配,你当前runtime用2.6.1,compiler却用2.5.0,这会导致兼容性冲突。
- KSP插件与Kotlin版本不匹配:KSP版本和项目中使用的Kotlin版本强绑定,版本不匹配会触发构建工具类的方法找不到错误。
具体修复步骤
1. 统一Room所有依赖的版本
修改app模块的build.gradle,将room-compiler版本调整为和runtime一致的2.6.1:
dependencies {//build.gradle(app) val room_version = "2.6.1" implementation("androidx.room:room-runtime:$room_version") ksp("androidx.room:room-compiler:$room_version") // 版本与runtime统一 implementation ("androidx.room:room-rxjava3:$room_version") implementation ("io.reactivex.rxjava3:rxjava:3.1.10") }
2. 正确配置KSP插件版本(统一在根目录管理)
建议在项目根目录的build.gradle中统一声明KSP插件版本,而非Library模块:
// 项目根目录 build.gradle plugins { id("com.google.devtools.ksp") version "2.0.21-1.0.27" apply false }
app模块的plugins块保持原有引用即可:
plugins {//build.gradle(app) alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) id("com.google.devtools.ksp") }
注意:KSP版本命名规则为
[Kotlin版本]-[KSP版本],请确认你项目中使用的Kotlin版本为2.0.21,否则需要更换对应版本的KSP插件。
3. 清理缓存并重启项目
- 点击Android Studio顶部菜单
File→Invalidate Caches...,选择Invalidate and Restart - 或者手动删除项目根目录下的
.gradle、app/build文件夹,重新执行Sync操作
错误原因说明
org.jetbrains.kotlin.buildtools.api.SourcesChanges com.google.devtools.ksp.gradle.KspTaskJvm.getChangedFiles(...) 方法找不到的问题,本质是KSP插件版本与Kotlin构建工具链版本不兼容,再加上Room依赖版本不一致的双重冲突,导致构建过程中出现类方法缺失的异常。统一版本并清理缓存后,这类问题通常可以解决。
内容的提问来源于stack exchange,提问作者mkrdmn
相关产品推荐
相关产品推荐

