Avatar ·

Версия Kotlin для сборки Gradle отличается от версии в плагине IDE

Всем привет! Я новичок в Kotlin и Android разработке. Использую Android Studio 3.0. Сегодня столкнулся со странной ошибкой при сборке проекта. Пишет: "kotlin version that is used for building with gradle (1.1.2-5) differs from the one bundled into the IDE plugin (1.1.2-4)" Я не понимаю, что это значит. Вроде бы все настройки стандартные. Вот мой build.gradle (проект): ```kotlin buildscript { ext.kotlin_version = '1.1.2-5' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } ``` И build.gradle модуля: ```kotlin apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 26 defaultConfig { applicationId "com.example.myapp" minSdkVersion 16 targetSdkVersion 26 versionCode 1 versionName "1.0" } } dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" } ``` Почему возникает это несоответствие? Как его исправить? И что будет, если его проигнорировать? Заранее спасибо за помощь! <<>>

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

Ошибка возникает из-за несоответствия версий Kotlin, используемых в двух разных местах:

  • Gradle-сборка — использует версию, указанную в build.gradle (у вас 1.1.2-5)
  • Плагин Kotlin в Android Studio — использует свою встроенную версию (у вас 1.1.2-4)

IDE предупреждает, что версия компилятора во время сборки может отличаться от версии, которую использует плагин для подсветки синтаксиса, автодополнения и анализа кода. Это может привести к:

  • Ложным ошибкам в редакторе (красные подчеркивания, которые не появляются при сборке)
  • Несоответствию поведения фич, добавленных в разных версиях
  • Проблемам с совместимостью стандартной библиотеки

Как исправить

Способ 1 (рекомендуемый): Обновить версию плагина Kotlin в Android Studio до той, что используется в Gradle. Для этого:

  1. Откройте File → Settings → Languages & Frameworks → Kotlin
  2. Нажмите кнопку Check for updates или Install
  3. Выберите версию 1.1.2-5 (или новее, если доступно)
  4. Нажмите OK и перезапустите IDE

Способ 2: Понизить версию в Gradle до версии плагина IDE. В вашем build.gradle измените:

ext.kotlin_version = '1.1.2-4'

Затем синхронизируйте проект (File → Sync Project with Gradle Files).

Способ 3 (лучший для долгосрочной перспективы): Обновить всё до актуальной стабильной версии. Например, для Kotlin 1.9.0:

// build.gradle (проект)
buildscript {
    ext.kotlin_version = '1.9.0'
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

// build.gradle (модуль)
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

После этого обновите плагин Kotlin в IDE до той же версии через Settings → Kotlin → Check for updates.

Как проверить версию плагина IDE

Откройте Help → About (или Android Studio → About на macOS). Найдите строку "Kotlin plugin version". Если она не совпадает с версией в Gradle — вы увидите предупреждение.

Важно

Не игнорируйте это предупреждение! Даже если сборка проходит успешно, различия могут вызвать:

  • Некорректную работу автодополнения
  • Ошибки статического анализа, которых нет при компиляции
  • Сложно отлавливаемые баги из-за разного поведения компилятора

Всегда синхронизируйте версии Kotlin в Gradle и плагине IDE — это сэкономит вам часы отладки.

<<>>

Альтернативный подход: использование BOM (Bill of Materials)

Если вы используете Gradle 7.0+ и Kotlin 1.6+, можно централизованно управлять версиями через Kotlin BOM. Это автоматически синхронизирует версии всех Kotlin-зависимостей, включая плагин и стандартную библиотеку.

// build.gradle (проект)
buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:8.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
    }
}

// build.gradle (модуль)
dependencies {
    implementation platform("org.jetbrains.kotlin:kotlin-bom:1.9.0")
    implementation "org.jetbrains.kotlin:kotlin-stdlib"
}

Преимущества:

  • Не нужно указывать версию для каждой Kotlin-библиотеки
  • Гарантированная совместимость всех компонентов
  • Легче обновлять — достаточно изменить версию в одном месте

Важно: BOM не влияет на версию плагина IDE, поэтому её всё равно придётся обновлять вручную через настройки Android Studio. Но BOM решает проблему несоответствия внутри Gradle-сборки.

После настройки BOM рекомендуется перезапустить IDE и выполнить File → Invalidate Caches / Restart, чтобы очистить старые кеши анализатора.