Kapt已弃用,升级Kotlin至1.2.30后项目无法运行,如何解决?
解决Kotlin 1.2.30升级后kapt相关运行错误的方案
我来帮你搞定这个问题!Kotlin 1.2.30版本对kapt的配置逻辑做了调整,旧的写法很容易引发运行错误,你可以跟着下面的步骤一步步排查修复:
1. 确保正确引入kapt插件
首先检查你的模块级build.gradle(一般是app/build.gradle)里的插件引入方式,Kotlin 1.2.30要求明确引入kotlin-kapt插件,而且顺序很重要:
如果你用的是新的Gradle plugins块写法(AGP 3.0+推荐),要这样配置:
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' // 这行必须加,是kapt正常工作的关键 }
如果是用旧的apply plugin写法,也要保证kotlin-kapt在kotlin-android之后引入:
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt'
2. 修正注解处理器的依赖声明
之前用annotationProcessor声明注解处理器的地方,Kotlin类对应的必须改成kapt,比如Dagger、Room这类依赖的编译包:
- 错误写法(会导致Kotlin类无法识别注解):
annotationProcessor 'com.google.dagger:dagger-compiler:2.15' - 正确写法:
kapt 'com.google.dagger:dagger-compiler:2.15'
提示:Java类用的注解处理器可以继续用annotationProcessor,但为了避免混淆,建议所有注解处理器统一用kapt声明。
3. 彻底清理缓存并重建项目
配置修改后,旧的编译缓存很可能拖后腿,一定要做这几步:
- 在Android Studio里依次点击
Build -> Clean Project,然后Build -> Rebuild Project - 要是还是不行,手动删掉项目根目录下的
.gradle、build文件夹,还有模块里的build文件夹,再点击File -> Sync Project with Gradle Files重新同步。
4. 检查Kotlin与AGP的版本兼容性
Kotlin 1.2.30要求Android Gradle Plugin(AGP)版本至少是3.0.0,你可以在项目级build.gradle里确认:
buildscript { ext.kotlin_version = '1.2.30' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0' // 不能低于这个版本,建议用匹配的稳定版 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }
如果AGP版本太低,会直接和Kotlin 1.2.30不兼容,导致kapt完全无法工作。
5. 根据具体错误日志精准排查
要是前面的步骤都试过还是报错,一定要仔细看错误提示:
- 如果提示找不到注解处理器类,检查依赖的版本是否和Kotlin 1.2.30兼容
- 如果是编译生成的注解类找不到,大概率是缓存问题,再重复一次清理重建的步骤就行
另外提一句,Kotlin 1.2.30已经是比较老的版本了,后续如果有机会,建议升级到1.3及以上的版本,这些版本对kapt的支持更稳定,bug也少很多。
内容的提问来源于stack exchange,提问作者Bhuvanesh BS




