Avatar ·

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

Привет, коллеги! Я новичок в Kotlin и Android-разработке, делаю своё первое Flutter-приложение. Сегодня столкнулся с непонятной ошибкой при попытке собрать проект в Android Studio. После обновления Flutter SDK и зависимостей в pubspec.yaml при запуске `flutter run` или при открытии проекта в Android Studio я получаю сообщение: ``` Your project requires a newer version of the Kotlin Gradle plugin. ``` Я использую Android Studio Hedgehog, Flutter 3.16, и мой проект создавался по шаблону `flutter create`. Я не менял вручную файлы build.gradle, но, возможно, я что-то сломал при добавлении пакетов. Вот как выглядит мой `android/build.gradle`: ```kotlin buildscript { ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.3.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } ``` И `android/app/build.gradle`: ```kotlin android { compileSdkVersion 34 ... } ``` Ошибка возникает сразу при синхронизации Gradle. Я пробовал чистить кэш (`flutter clean`, `./gradlew clean`), перезапускать IDE, но ничего не помогает. Подскажите, пожалуйста, как исправить эту ошибку? Нужно ли менять версию Kotlin или Gradle? Или проблема в чём-то другом? Заранее спасибо за помощь! <<>>

Причина ошибки

Ошибка "Your project requires a newer version of the Kotlin Gradle plugin" возникает, когда версия плагина Kotlin Gradle (org.jetbrains.kotlin:kotlin-gradle-plugin) устарела и не совместима с текущей версией Gradle или Android Gradle Plugin (AGP). В вашем случае вы используете Kotlin 1.7.10, AGP 7.3.0 и compileSdk 34 — это несовместимая комбинация, так как для SDK 34 требуется более новый AGP, а он, в свою очередь, требует более свежий Kotlin.

Решение: пошаговая инструкция

Проблема решается обновлением версий Kotlin и AGP до совместимых. Следуйте шагам:

  1. Определите совместимые версии:
    • Для AGP 8.x (рекомендуется для compileSdk 34) нужен Kotlin 1.9.x или выше.
    • Проверьте актуальные версии на официальном сайте Android.
  2. Отредактируйте android/build.gradle:
    buildscript {
        // Уберите ext.kotlin_version, лучше задать версию напрямую
        ext.kotlin_version = '1.9.22' // Актуальная стабильная версия
        repositories {
            google()
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:8.2.0' // AGP 8.2.0
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        }
    }
  3. Обновите android/app/build.gradle:
    android {
        compileSdk 34 // compileSdkVersion устарел, используйте compileSdk
        ...
        defaultConfig {
            minSdk 21 // или ваше значение
            targetSdk 34
        }
    }
    
    // Если используете Kotlin для Android-кода, добавьте:
    apply plugin: 'kotlin-android'
  4. Обновите Gradle wrapper (файл android/gradle/wrapper/gradle-wrapper.properties):
    distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
  5. Синхронизируйте проект:
    • В Android Studio: нажмите "File" → "Sync Project with Gradle Files".
    • Или выполните в терминале: cd android && ./gradlew clean.

Дополнительные советы для Flutter-проектов

  • Не редактируйте файлы вручную — Flutter автоматически генерирует их. Если вы изменили android/ вручную, лучше удалите папку и выполните flutter create --project-name your_project . заново.
  • Проверьте pubspec.yaml: некоторые пакеты требуют определённую версию Kotlin. Например, firebase_core может требовать Kotlin 1.9+. Просто запустите flutter pub upgrade.
  • Используйте flutter doctor -v для диагностики: он покажет, какие версии инструментов установлены.

После выполнения этих шагов ошибка должна исчезнуть. Если нет — проверьте, не осталось ли в проекте старых файлов из кэша (удалите android/.gradle и android/app/build).

<<>>

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

Если вы не хотите вручную править Gradle-файлы, можно попробовать автоматическое исправление через Flutter. Выполните следующие команды в терминале из корня проекта:

flutter clean
flutter pub get
cd android
./gradlew clean
./gradlew wrapper --gradle-version 8.5
cd ..
flutter run

Если это не помогает, попробуйте пересоздать папку android:

rm -rf android/
flutter create --platforms=android .
flutter pub get

Этот метод сбросит все настройки Gradle до стандартных, подходящих для вашей версии Flutter. Однако учтите, что вы потеряете кастомные изменения в android/ (например, добавленные разрешения или сервисы).

Если вы используете Android Studio Hedgehog

Убедитесь, что в настройках IDE (File → Settings → Languages & Frameworks → Android SDK) установлена последняя версия SDK Build-Tools. Иногда ошибка возникает из-за того, что IDE использует старый SDK. Обновите его через SDK Manager.