Привет всем, у меня возникла проблема, когда я пытаюсь создать 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
может ли кто-нибудь помочь мне найти решение этой проблемы?
моя версия флаттера - 3.19.1
вы пытались понизить версию компилятора Kotlin до 1.6.0?
как понизить версию компилятора Kotlin? кстати, я новичок, я все еще не понимаю, как изменить версию компилятора котлина во флаттере
Внутри файла settings.gradle есть такая строка: id "org.jetbrains.kotlin.android" version "1.8.0" apply false. Измените версию на «1.6.0».
я попытался изменить его, но ошибка все еще возникает
Вы можете посмотреть матрицу совместимости Java и Gradle здесь, а также версию плагина Kotlin и Kotlin.
Исходя из этого, вам следует обновить версию JVM как минимум до 17, поскольку ваш плагин Android Gradle версии 7.3.
Итак, измените следующие строки
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = '17'
}
спасибо за ответ, я попробовал решение, но ошибка все еще возникает :(
Я хочу спросить, следует ли мне запускать приложение в эмуляторе, чтобы обновить приложение после изменения версии Kotlin, или мне просто нужно запустить flutter build apk в терминале?
Все должно работать нормально
**Вам нужно написать это в файле build.gradle в gradle основной папки **
buildscript {
ext.kotlin_version = '1.6.0'
...
}
спасибо за ответ, я попробовал решение, но ошибка все еще возникает :(
Я хочу спросить, следует ли мне запускать приложение в эмуляторе, чтобы обновить приложение после изменения версии Kotlin, или мне просто нужно запустить flutter build apk в терминале?
Даже если переход на более раннюю версию Kotlin сработает и не станет хорошим решением в долгосрочной перспективе, ваше приложение не будет развиваться и застрянет в предыдущей версии.
Объяснение ошибки:
Когда вы видите такую ошибку, очевидно, что модуль был скомпилирован с несовместимой версией Kotlin. Потому что двоичная версия его метаданных — 1.8.0, а ожидаемая версия — 1.6.0.
Скорее всего, происходит следующее:
Возможности того, почему это происходит:
Как это исправить:
Унифицировать версии 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 :), я поделюсь подробностями, чтобы объяснить это в своем ответе блок ниже
Привет всем, большое спасибо за все ваши ответы, ваш ответ является для меня справочным материалом и проясняет мои мысли, поэтому я могу проанализировать, что не так с моим кодом, поэтому я обнаружил, что ошибка находится в версии Gradle, есть новый проект Flutter. какая-то новая конфигурация, и я пытаюсь найти какую-нибудь статью и еще один вопрос, который имеет такую же проблему, как и моя, и я нашел эти статьи, которые помогут мне решить мою проблему, в моем случае речь идет о версии оболочки Gradle, я пытался изменить Gradle version и измените версию Kotlin на новейшую версию. Важно помнить, что изменить версию Kotlin недостаточно, я обнаружил, что мне также необходимо изменить свою версию Gradle, это android/gradle/wrapper/gradle-wrapper.properties, для более подробной информации вы можете получить доступ к этим ссылкам ниже:
Вопрос 1
Статья 1
Какую версию Flutter вы используете? Кроме того, вы указываете версию компилятора Kotlin 1.8.0.