Модуль был скомпилирован с несовместимой версией Kotlin. Двоичная версия метаданных — 1.8.0, ожидаемая версия — 1.6.0

Привет всем, у меня возникла проблема, когда я пытаюсь создать APK для приложения Flutter, у меня в терминале возникает эта ошибка:

Модуль был скомпилирован с несовместимой версией Kotlin. Двоичная версия его метаданных равна 1. .8.0, ожидаемая версия — 1.6.0.

для подробностей я поместил свой код ниже: flutter version : 3.19.1

// android/build.gradle
allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

tasks.register("clean", Delete) {
    delete rootProject.buildDir
}

// android/app/build.gradle
plugins {
    id "com.android.application"
    id "kotlin-android"
    id "dev.flutter.flutter-gradle-plugin"
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

android {
    namespace "com.example.edupass_mobile"
    compileSdk 34
    ndkVersion flutter.ndkVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.edupass_mobile"
        // You can update the following values to match your application needs.
        // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
        minSdkVersion 21
        targetSdkVersion flutter.targetSdkVersion
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
}

flutter {
    source '../..'
}

dependencies {}


// settings.gradle
pluginManagement {
    def flutterSdkPath = {
        def properties = new Properties()
        file("local.properties").withInputStream { properties.load(it) }
        def flutterSdkPath = properties.getProperty("flutter.sdk")
        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
        return flutterSdkPath
    }
    settings.ext.flutterSdkPath = flutterSdkPath()

    includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")

    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}

plugins {
    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
    id "com.android.application" version "7.3.0" apply false
    id "org.jetbrains.kotlin.android" version "1.8.0" apply false
}

include ":app"


Я ищу ту же проблему, что и моя, но в моем коде нет кода buildscript, как у других, поэтому я не понял, как изменить версию Gradle

может ли кто-нибудь помочь мне найти решение этой проблемы?

Какую версию Flutter вы используете? Кроме того, вы указываете версию компилятора Kotlin 1.8.0.

tomerpacific 20.08.2024 08:29

моя версия флаттера - 3.19.1

Dzy 20.08.2024 10:32

вы пытались понизить версию компилятора Kotlin до 1.6.0?

tomerpacific 20.08.2024 14:55

как понизить версию компилятора Kotlin? кстати, я новичок, я все еще не понимаю, как изменить версию компилятора котлина во флаттере

Dzy 20.08.2024 15:11

Внутри файла settings.gradle есть такая строка: id "org.jetbrains.kotlin.android" version "1.8.0" apply false. Измените версию на «1.6.0».

tomerpacific 20.08.2024 15:25

я попытался изменить его, но ошибка все еще возникает

Dzy 20.08.2024 16:33
0
6
50
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете посмотреть матрицу совместимости Java и Gradle здесь, а также версию плагина Kotlin и Kotlin.

Исходя из этого, вам следует обновить версию JVM как минимум до 17, поскольку ваш плагин Android Gradle версии 7.3.

Итак, измените следующие строки

compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }

    kotlinOptions {
        jvmTarget = '17'
    }

спасибо за ответ, я попробовал решение, но ошибка все еще возникает :(

Dzy 21.08.2024 15:02

Я хочу спросить, следует ли мне запускать приложение в эмуляторе, чтобы обновить приложение после изменения версии Kotlin, или мне просто нужно запустить flutter build apk в терминале?

Dzy 21.08.2024 15:18

Все должно работать нормально

gtxtreme 21.08.2024 15:46

**Вам нужно написать это в файле build.gradle в gradle основной папки **

buildscript {
    ext.kotlin_version = '1.6.0' 
    ...
}

спасибо за ответ, я попробовал решение, но ошибка все еще возникает :(

Dzy 21.08.2024 15:03

Я хочу спросить, следует ли мне запускать приложение в эмуляторе, чтобы обновить приложение после изменения версии Kotlin, или мне просто нужно запустить flutter build apk в терминале?

Dzy 21.08.2024 15:18
Ответ принят как подходящий

Даже если переход на более раннюю версию Kotlin сработает и не станет хорошим решением в долгосрочной перспективе, ваше приложение не будет развиваться и застрянет в предыдущей версии.

Объяснение ошибки:

Когда вы видите такую ​​ошибку, очевидно, что модуль был скомпилирован с несовместимой версией Kotlin. Потому что двоичная версия его метаданных — 1.8.0, а ожидаемая версия — 1.6.0.

Скорее всего, происходит следующее:

  • Несоответствие версии Kotlin: ваш проект или одна из его зависимостей были скомпилированы с использованием Kotlin версии 1.8.0, но ваша текущая установка предполагает версию 1.6.0.
  • Бинарная несовместимость: Котлин, как и любой язык, развивается. Изменения в языке могут привести к изменениям в способе компиляции кода в байт-код. Когда вы смешиваете разные версии, компилятор запутывается, потому что пытается прочитать байт-код, который он не до конца понимает.

Возможности того, почему это происходит:

  • Проблемы с зависимостями. Возможно, одна из ваших библиотек или модулей была скомпилирована с более новой версией Kotlin, чем та, которую использует ваш проект.
  • Конфигурация проекта: версия Kotlin вашего проекта в build.gradle может не соответствовать версиям, используемым вашими зависимостями.
  • Недавние обновления. Если вы недавно обновили Kotlin или какие-либо библиотеки, но не все части вашего проекта, у вас может возникнуть такое несоответствие.
  • Несовместимость плагинов: некоторые из добавленных плагинов несовместимы с плагином версии Kotlin, поэтому вам придется использовать новую версию.

Как это исправить:

Унифицировать версии Kotlin: Убедитесь, что все части вашего проекта используют одну и ту же версию Kotlin. Обновите build.gradle, чтобы использовать последнюю версию, которую поддерживают все ваши зависимости:

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:1.8.0"
}

Проверьте зависимости: Используйте такие инструменты, как зависимости gradle или gradle --info, чтобы узнать, какие зависимости какую версию Kotlin используют. Принудительная версия: если библиотека настаивает на использовании более старой версии, вам может потребоваться принудительно установить версию, которую вы можете добавить следующим образом:

configurations.all {
    resolutionStrategy.force 'org.jetbrains.kotlin:kotlin-stdlib:1.8.0'
}

Очистка и перестройка. Иногда простая очистка и перестройка может решить проблемы, связанные с сохранением старого байт-кода.

Проверьте наличие конфликтов: найдите любые плагины или другие конфигурации, которые могут принудительно использовать конкретную версию Kotlin.

Если вы будете следовать всему вышеизложенному, вам не нужно будет понижать версию Kotlin, на самом деле, если вы можете обновить свою версию Kotlin, последняя работающая версия — version 1.9.24

спасибо за ответ, ваш ответ является для меня ссылкой и проясняет мои мысли, поэтому я могу проанализировать, что не так с моим кодом, и я обнаружил, что ошибка в версии Gradle :), я поделюсь подробностями, чтобы объяснить это в своем ответе блок ниже

Dzy 22.08.2024 04:57

Привет всем, большое спасибо за все ваши ответы, ваш ответ является для меня справочным материалом и проясняет мои мысли, поэтому я могу проанализировать, что не так с моим кодом, поэтому я обнаружил, что ошибка находится в версии Gradle, есть новый проект Flutter. какая-то новая конфигурация, и я пытаюсь найти какую-нибудь статью и еще один вопрос, который имеет такую ​​же проблему, как и моя, и я нашел эти статьи, которые помогут мне решить мою проблему, в моем случае речь идет о версии оболочки Gradle, я пытался изменить Gradle version и измените версию Kotlin на новейшую версию. Важно помнить, что изменить версию Kotlin недостаточно, я обнаружил, что мне также необходимо изменить свою версию Gradle, это android/gradle/wrapper/gradle-wrapper.properties, для более подробной информации вы можете получить доступ к этим ссылкам ниже:

Вопрос 1

Статья 1

Статья 2

Другие вопросы по теме