Avatar ·

Ошибка "Your project requires a newer version of the Kotlin Gradle plugin" в Android Studio при сборке Flutter проекта

Всем привет. Я новичок в разработке под Android, пишу на Flutter. Внезапно при попытке собрать проект (команда `flutter run`) или просто открыть Android-часть проекта в Android Studio, вылетает ошибка: ``` Your project requires a newer version of the Kotlin Gradle plugin. ``` Я использую Flutter 3.10, Android Studio Giraffe. Вот мой `android/build.gradle`: ```kotlin buildscript { ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:8.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } ``` И `android/app/build.gradle`: ```kotlin android { compileSdkVersion 34 ... } ``` Я обновлял SDK, ставил последние версии плагинов, но ошибка всё равно появляется. Что я делаю не так? Как понять, какая версия Kotlin плагина "требуется"? Где это вообще настраивается? Помогите, пожалуйста, проект не собирается. <<>>

Причина ошибки и диагностика

Ошибка "Your project requires a newer version of the Kotlin Gradle plugin" возникает из-за несовместимости между версией Kotlin Gradle плагина, версией Android Gradle Plugin (AGP) и версией плагина Flutter, который управляет сборкой. Чаще всего проблема в том, что вы используете устаревший Kotlin плагин (1.7.10) с новой версией AGP (8.0.0+) или с новой версией compileSdk (34). AGP 8.0.0 требует Kotlin 1.8.0 или выше, а для SDK 34 рекомендуется Kotlin 1.9.0+.

Пошаговое решение

  1. Определите требуемую версию Kotlin. Откройте терминал в корневой папке вашего Flutter проекта и выполните команду:
    flutter doctor -v
    Найдите строку Android toolchain — там будет указана версия Kotlin, которую рекомендует ваш Flutter SDK. Также можно зайти в android/build.gradle и временно закомментировать строку с kotlin_version, чтобы посмотреть, какую версию предлагает Flutter при синхронизации.
  2. Обновите версию Kotlin. В файле android/build.gradle измените:
    ext.kotlin_version = '1.9.22'
    (на момент написания ответа это стабильная версия, совместимая с AGP 8.x и SDK 34). Если используете Gradle Kotlin DSL, строка будет выглядеть так:
    val kotlinVersion = "1.9.22"
  3. Обновите версию Android Gradle Plugin (AGP). В том же файле проверьте версию AGP. Для Flutter 3.10+ лучше использовать AGP 8.1.0 или 8.2.0:
    classpath 'com.android.tools.build:gradle:8.1.4'
  4. Обновите Gradle wrapper. Откройте файл android/gradle/wrapper/gradle-wrapper.properties и установите совместимую версию Gradle. Для AGP 8.1.x нужен Gradle 8.3+:
    distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
  5. Синхронизируйте проект. Закройте Android Studio, удалите папки .gradle и build в папке android/. Затем в терминале выполните:
    cd android
    ./gradlew clean
    cd ..
    flutter clean
    flutter pub get
    flutter run

Проверка совместимости (таблица)

Основные пары версий, которые гарантированно работают вместе:

  • Flutter 3.13+: Kotlin 1.9.22, AGP 8.2.0, Gradle 8.4
  • Flutter 3.10: Kotlin 1.8.22, AGP 8.1.0, Gradle 8.2
  • Flutter 3.7: Kotlin 1.7.20, AGP 7.4.0, Gradle 7.6

Если после всех изменений ошибка остаётся, проверьте файл android/settings.gradle — там может быть указана устаревшая версия Kotlin плагина через plugins { id("org.jetbrains.kotlin.android") version "..." }. Удалите эту строку или приведите её в соответствие с версией из build.gradle.

<<>>

Альтернативный подход: использование Flutter-специфичных настроек

Если ручное обновление версий кажется сложным, можно воспользоваться встроенными возможностями Flutter для автоматического управления версиями Kotlin и Gradle.

  1. Откройте файл android/build.gradle и полностью удалите строку ext.kotlin_version = '1.7.10' и строку с classpath для kotlin-gradle-plugin, если она есть.
  2. Вместо этого добавьте в начало файла android/build.gradle следующий блок (если его ещё нет):
    plugins {
        id("com.android.application") version "8.1.0" apply false
        id("com.android.library") version "8.1.0" apply false
        id("org.jetbrains.kotlin.android") version "1.9.22" apply false
    }
  3. В файле android/app/build.gradle добавьте в начало:
    plugins {
        id("com.android.application")
        id("org.jetbrains.kotlin.android")
    }
  4. Удалите все старые блоки buildscript и dependencies с Kotlin и AGP из корневого build.gradle — они теперь заменены плагинами.
  5. Выполните flutter clean и flutter pub get.

Этот метод использует современный подход с декларативными плагинами (plugin DSL), который Flutter рекомендует для новых проектов. Он автоматически подтягивает совместимые версии и избавляет от ручного отслеживания зависимостей.