Kotlin应用运行报错::app:kaptDebugKotlin任务执行失败
问题描述
多次尝试运行应用均持续出现kapt相关报错,应用无法在手机上启动。已尝试清理项目、执行./gradlew clean命令,仍然出现相同错误,应用可成功构建但无法运行。
报错信息
Execution failed for task ':app:kaptDebugKotlin'. > A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction > java.lang.reflect.InvocationTargetException (no error message)
现有配置
项目级build.gradle
buildscript { ext.kotlin_version = '1.7.0-RC2' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.2.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() mavenCentral() } } task clean(type: Delete) { delete rootProject.buildDir }
App模块级build.gradle
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' android { compileSdk 32 defaultConfig { applicationId "com.schatzdesigns.mobileloanappuiconcept" minSdkVersion 16 targetSdkVersion 32 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } dataBinding { enabled = true } buildToolsVersion '33.0.0 rc2' } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.6.0-alpha04' implementation 'androidx.core:core-ktx:1.9.0-alpha04' implementation 'com.google.android.material:material:1.7.0-alpha02' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.vectordrawable:vectordrawable:1.2.0-beta01' implementation 'androidx.cardview:cardview:1.0.0' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.0-rc01' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' //noinspection LifecycleAnnotationProcessorWithJava8 kapt 'androidx.lifecycle:lifecycle-compiler:2.5.0-rc01' implementation 'com.google.dagger:dagger:2.35.1' implementation 'com.google.dagger:dagger-android:2.35.1' implementation 'com.google.dagger:dagger-android-support:2.16' kapt 'com.google.dagger:dagger-android-processor:2.16' kapt 'com.google.dagger:dagger-compiler:2.16' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.5.0-alpha04' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0-alpha07' } kapt { generateStubs = false }
问题根因
该kaptDebugKotlin任务执行失败由多个配置问题共同导致:
- Dagger依赖版本错位:Dagger运行时API使用2.35.1版本,但对应的kapt注解处理器仍使用2.16版本,版本跨度过大导致注解处理器执行时抛出无明确提示的反射调用异常,这是此类无信息kapt报错最常见的诱因。
- 大量使用未正式发布的预览版组件:Kotlin使用1.7.0-RC2预览版、构建工具使用33.0.0 rc2预览版、多数AndroidX依赖使用alpha/rc预览版,这类版本与Android Gradle Plugin 7.2.1的兼容性未经过完整验证,极易触发构建链路异常。
- 引用已被移除的废弃插件:
kotlin-android-extensions插件在Kotlin 1.7版本已被正式移除,继续保留该插件引用会干扰kapt任务正常执行。 - kapt配置错误:手动设置
generateStubs = false会导致注解处理器无法生成必要的桩代码,直接触发执行异常。
修复步骤
按顺序执行以下操作即可解决问题:
- 对齐所有Dagger依赖版本,将app模块build.gradle中Dagger相关依赖和kapt处理器全部统一为2.35.1版本,替换对应代码块为:
implementation 'com.google.dagger:dagger:2.35.1' implementation 'com.google.dagger:dagger-android:2.35.1' implementation 'com.google.dagger:dagger-android-support:2.35.1' kapt 'com.google.dagger:dagger-android-processor:2.35.1' kapt 'com.google.dagger:dagger-compiler:2.35.1'
- 替换不稳定预览版组件为正式稳定版:
- 修改项目级build.gradle中的Kotlin版本,将
ext.kotlin_version = '1.7.0-RC2'替换为ext.kotlin_version = '1.7.10'(Kotlin 1.7系列首个正式稳定版) - 将app模块build.gradle中的
buildToolsVersion '33.0.0 rc2'替换为正式版buildToolsVersion '33.0.0',如果不需要适配Android 13可以直接删除该行配置,AGP会自动匹配兼容版本的构建工具 - 可选:将alpha/rc版本的AndroidX依赖替换为同系列正式稳定版,进一步降低构建异常概率
- 修改项目级build.gradle中的Kotlin版本,将
- 移除已废弃插件:删除app模块build.gradle中
apply plugin: 'kotlin-android-extensions'行,如果之前使用了该插件提供的视图绑定功能,替换为Android官方ViewBinding实现即可。 - 修正kapt配置:直接删除app模块build.gradle末尾的
kapt { generateStubs = false }配置块,使用kapt默认配置即可。 - 清理缓存重新构建:关闭Android Studio,删除项目根目录下的
.gradle文件夹、app模块下的build文件夹,重新打开项目等待Gradle Sync完成后再执行构建运行。
如果执行完以上步骤仍有报错,可以在项目的gradle.properties文件中添加kapt.verbose=true开启kapt详细日志,再次构建时就能看到具体异常堆栈,方便定位剩余问题。
注:之前执行的
./gradlew clean只能清理构建产物,无法修正版本不匹配和配置错误类问题,因此不会生效。
内容的提问来源于stack exchange,提问作者agega
相关产品推荐
相关产品推荐

