lel*_*cia 8 android jvm gradle kotlin
使用 Gradle 8 和 Kotlin 1.8 编译时出现错误
compileDebugJavaWithJavac' task (current target is 1.8) and 'kaptGenerateStubsDebugKotlin' task (current target is 17)
jvm target compatibility should be set to the same Java version.
Run Code Online (Sandbox Code Playgroud)
这是一个多模块项目,问题仅发生在该模块上。但是,该模块也使用相同的 JVM 目标和兼容性目标。但这是怎么发生的呢?
这是我的这个模块的 Gradle:
plugins {
id 'com.android.library'
alias libs.plugins.kotlin.android.plugin
alias libs.plugins.kotlin.kapt.plugin
alias libs.plugins.dagger.hilt.module.plugin
}
android {
namespace 'com.lelestacia.network'
compileSdk 33
defaultConfig {
minSdk 24
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
}
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'
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
您需要指定模块编译版本的兼容性以适合 kaptGenerateStubsDebugKotlin。
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
Run Code Online (Sandbox Code Playgroud)
但对于最新版本的 Gradle 来说这还不够,所以你必须使用 Gradle JVM 工具链功能。将以下配置添加到模块 gradle 文件的 android 部分
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}
kotlinOptions {
jvmTarget = '17'
}
Run Code Online (Sandbox Code Playgroud)
我遇到类似的错误。这些过程对我有用。
build.gradle(:project)
plugins {
id 'com.android.application' version '8.0.0' apply false
id 'com.android.library' version '8.0.0' apply false
id 'org.jetbrains.kotlin.android' version '1.8.10' apply false
}
Run Code Online (Sandbox Code Playgroud)
build.gradle(:app)
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = '17'
}
...
Run Code Online (Sandbox Code Playgroud)
Android Studio - Gradle 项目
| 归档时间: |
|
| 查看次数: |
6565 次 |
| 最近记录: |