Android项目从Kapt迁移到KSP时遭遇NoSuchMethodError错误求助
看起来你遇到了典型的KSP与依赖库版本不兼容导致的问题,我来帮你一步步排查解决:
错误原因分析
你日志里的NoSuchMethodError: 'kotlin.KotlinVersion com.google.devtools.ksp.processing.SymbolProcessorEnvironment.getKspVersion()'是因为Room 2.6.1的KSP处理器需要调用KSP 1.0.13及以上版本才新增的API,但你当前使用的KSP版本是1.9.0-1.0.12,版本过低,导致方法找不到。
具体修复步骤
升级KSP到兼容版本
你的Kotlin版本是1.9.0,对应的KSP需要使用前缀为1.9.0-的版本,且版本号不低于1.0.13。修改你的versions块中的kspPlugin版本:kspPlugin = "1.9.0-1.0.15"这个版本和Kotlin 1.9.0完全兼容,且满足Room 2.6.1对KSP API的要求。
清理重复依赖,避免冲突
我注意到你在依赖声明里重复定义了Work Runtime的依赖(androidx-work-runtime-ktx和androidx-work-runtime-ktx-v271),这两个版本都是2.10.0,属于冗余依赖,容易引发潜在冲突。建议删除[libraries]中的androidx-work-runtime-ktx-v271,统一使用androidx-work-runtime-ktx。移除残留的Kapt配置
你现在的项目里还残留了Kapt的插件和配置,这会和KSP产生冲突,必须清理:- 在
settings.gradle的[plugins]块中,删除jetbrains-kotlin-kotlin这一项(也就是Kapt插件) - 在模块的
build.gradle的plugins中,删除alias(libs.plugins.jetbrains.kotlin.kotlin) - 同时删除模块
build.gradle里的kapt { correctErrorTypes = true }配置块
- 在
清理缓存并重建项目
做完以上修改后,先执行./gradlew clean清理构建缓存,然后点击Android Studio的Build -> Rebuild Project重新构建,确保所有配置生效。
额外注意事项
- 确保所有原来使用
kapt引入的注解处理器,都替换成了ksp,比如你已经将Room、Hilt的编译器依赖从kapt改成ksp,这部分是正确的,不要出现混合使用的情况。 - KSP的版本命名规则是
[Kotlin版本]-[KSP版本],必须保证前半部分和你项目中的Kotlin版本完全一致,否则会出现兼容性问题。
备注:内容来源于stack exchange,提问作者Taki

