您的当前位置:首页正文

detected for tasks ‘compileDebugJavaWithJavac‘ (1.8) and ‘compileDebugKotlin‘ (17).

2024-11-17 来源:个人技术集锦

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

显示全文