flutter 错误信息:
Inconsistent JVM-target compatibility detected for tasks 'compileDebugJavaWithJavac' (1.8) and 'compileDebugKotlin' (17).
解决方法:
不用更改android的plugin,因为问题根本没出在这里,网上的答案都是错误的
不用更改android的plugin,因为问题根本没出在这里,网上的答案都是错误的
不用更改android的plugin,因为问题根本没出在这里,网上的答案都是错误的
你只需要强制所有的包指定Kotlin版本即可。
allprojects {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
// 修复由于高版本导致namespace检测为空的问题,没遇到可不添加
subprojects {
afterEvaluate { project ->
if (project.hasProperty('android')) {
project.android {
if (namespace == null) {
namespace project.group
}
}
}
}
}
// 修复由于高版本导致namespace检测为空的问题,没遇到可不添加
// 强制指定Kotilin版本
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
afterEvaluate {
if (it.hasProperty('android')) {
if (it.android.namespace == null) {
def manifest = new XmlSlurper().parse(file(it.android.sourceSets.main.manifest.srcFile))
def packageName = manifest.@package.text()
// println("Setting ${packageName} as android namespace")
android.namespace = packageName
}
// 指定Kotilin版本
def javaVersion = JavaVersion.VERSION_17
android {
compileOptions {
sourceCompatibility javaVersion
targetCompatibility javaVersion
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
kotlinOptions {
jvmTarget = javaVersion.toString()
}
}
// println("Setting java version to ${javaVersion.toString()} which is $javaVersion")
}
}
}
}
// 强制指定Kotilin版本
subprojects {
project.evaluationDependsOn(':app')
}
}
它会指定所有子项目Kotlin使用的版本为17,其他版本对照修改即可。
参考资料:https://github.com/flutter/flutter/issues/125181