从kapt迁移到KSP后Gradle同步失败求助
我正按照官方指南从kapt迁移到KSP,但项目同步时出现以下错误:
找不到方法''org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation.getTarget()'' 'org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation.getTarget()'
Gradle依赖缓存可能已损坏(有时因网络超时导致)。
重新下载依赖并同步项目(需网络);Gradle构建进程(守护进程)状态可能损坏,停止所有Gradle守护进程可能解决问题。
停止Gradle构建进程(需重启);项目可能使用了与其他插件或Gradle版本不兼容的第三方插件。
若Gradle进程损坏,可尝试关闭IDE并终止所有Java进程。
我已经尝试了上述所有建议,但都无效。以下是我的app/build.gradle文件内容:
plugins { id "com.android.application" id "kotlin-android" id "kotlin-parcelize" id "com.google.devtools.ksp" version "1.8.21-1.0.11" id "com.google.gms.google-services" id "com.google.firebase.crashlytics" id "com.google.firebase.appdistribution" id "com.google.firebase.firebase-perf" } ... dependencies { implementation "androidx.room:room-runtime:2.5.1" ksp "androidx.room:room-compiler:2.5.1" implementation "com.squareup.moshi:moshi:1.15.0" implementation "com.squareup.moshi:moshi-adapters:1.14.0" ksp "com.squareup.moshi:moshi-kotlin-codegen:1.14.0" ... }
我没有在其他地方使用kapt或ksp,甚至尝试把依赖中的ksp替换为kapt只保留ksp插件导入,还是出现相同错误,求解决思路?
解决思路
严格匹配KSP与Kotlin版本
KSP版本必须和项目Kotlin版本完全对应。你当前用的KSP版本1.8.21-1.0.11要求Kotlin版本为1.8.21,检查根目录build.gradle里的Kotlin插件版本是否一致:// 根build.gradle示例配置 buildscript { ext.kotlin_version = "1.8.21" dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }检查Gradle版本兼容性
KSP 1.0.11要求Gradle版本至少为7.4,建议升级到7.4及以上稳定版。修改gradle/wrapper/gradle-wrapper.properties:distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip更新Firebase插件版本
你引入的Firebase系列插件可能和KSP存在版本冲突,将所有Firebase相关插件升级到最新稳定版,确保和当前Kotlin、Gradle版本兼容:// 根build.gradle中更新Firebase插件 buildscript { dependencies { classpath "com.google.gms:google-services:4.4.0" classpath "com.google.firebase:firebase-crashlytics-gradle:2.9.9" classpath "com.google.firebase:firebase-appdistribution-gradle:4.0.1" classpath "com.google.firebase:perf-plugin:1.4.2" } }彻底清理缓存后重建
执行以下操作清除所有缓存:- 运行命令
./gradlew clean - 删除项目根目录的
.gradle文件夹 - 删除
app/build文件夹 - 重启IDE后重新同步项目
- 运行命令
排查第三方插件冲突
如果项目有其他未列出的第三方插件,暂时逐一禁用它们,排查是否是某个插件导致的兼容性问题。
内容的提问来源于stack exchange,提问作者tzegian

