构建Android应用时出现:app:kaptGenerateStubsDebugKotlin任务执行失败问题
解决Android构建中JVM目标版本不兼容问题
你遇到的错误是因为Java编译任务和kapt生成桩代码的任务使用了不同的JVM目标版本(1.8 vs 17),导致构建冲突。以下是两种可行的解决方法:
方法一:使用JVM工具链统一版本(推荐)
在android代码块中添加JVM工具链配置,让Gradle自动管理对应版本的JDK,确保所有任务使用相同的Java版本:
android { namespace 'com.waltonbd.daggerwithcheezy' compileSdk 32 defaultConfig { // 原有配置不变 applicationId "com.waltonbd.daggerwithcheezy" minSdk 24 targetSdk 32 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { // 原有配置不变 release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } // 添加工具链配置 kotlin { jvmToolchain(8) } }
方法二:强制kapt使用相同JVM目标版本
如果不想用工具链,可以直接给kapt任务指定Java版本参数,确保和Java编译任务一致:
android { namespace 'com.waltonbd.daggerwithcheezy' compileSdk 32 defaultConfig { // 原有配置不变 applicationId "com.waltonbd.daggerwithcheezy" minSdk 24 targetSdk 32 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { // 原有配置不变 release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } // 添加kapt参数配置 kapt { javacOptions { option("-source", "1.8") option("-target", "1.8") } } }
额外检查:如果项目根目录的gradle.properties文件里有org.gradle.java.home配置,确认它指向的是Java 8的安装路径,避免环境层面的版本冲突。
内容的提问来源于stack exchange,提问作者Ibrahim Tinku
相关产品推荐
相关产品推荐

