You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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-kaptkotlin-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
  • 要是还是不行,手动删掉项目根目录下的.gradlebuild文件夹,还有模块里的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

火山引擎 最新活动