Предупреждение "Версия плагина Kotlin не совпадает с версией библиотеки" (хотя они одинаковые)
Причина предупреждения
Данное предупреждение возникает из-за несоответствия между версией плагина Kotlin (org.jetbrains.kotlin.android) и версией стандартной библиотеки Kotlin (kotlin-stdlib), которая подключается транзитивно через другие зависимости. Даже если вы явно указали версию плагина 1.9.0, одна из библиотек в вашем проекте может тянуть за собой другую версию Kotlin, например 1.8.22.
Как найти конфликтующую зависимость
Выполните команду ./gradlew :app:dependencies --configuration releaseRuntimeClasspath (или debugRuntimeClasspath). В выводе найдите строки, содержащие kotlin-stdlib. Пример проблемного вывода:
releaseRuntimeClasspath - Resolved configuration for variant: release
+--- org.jetbrains.kotlin:kotlin-stdlib:1.9.0
| \--- org.jetbrains.kotlin:kotlin-stdlib-common:1.9.0
+--- com.example:some-library:2.0.0
| \--- org.jetbrains.kotlin:kotlin-stdlib:1.8.22 -> 1.9.0 (forced)
В этом примере видно, что библиотека some-library тянет kotlin-stdlib:1.8.22, но благодаря автоматическому разрешению конфликтов Gradle использует версию 1.9.0. Однако, если в вашем случае версия не совпадает (например, 1.8.22 не заменяется на 1.9.0), предупреждение останется.
Решение 1: Явное указание версии kotlin-stdlib
Добавьте в файл build.gradle.kts модуля app явную зависимость от kotlin-stdlib с версией, совпадающей с плагином:
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.0")
// остальные зависимости
}
Решение 2: Использование BOM (Bill of Materials)
Если у вас несколько модулей, проще добавить BOM-зависимость в корневой build.gradle.kts:
dependencies {
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.9.0"))
}
Это гарантирует, что все подключаемые библиотеки Kotlin будут одной версии.
Решение 3: Принудительное исключение старой версии
Если вы нашли конкретную библиотеку, которая вызывает конфликт, исключите её транзитивную зависимость:
implementation("com.example:some-library:2.0.0") {
exclude(group = "org.jetbrains.kotlin", module = "kotlin-stdlib")
}
Решение 4: Обновление Gradle и плагина Android
Иногда проблема связана с устаревшей версией Android Gradle Plugin (AGP). Убедитесь, что у вас установлена последняя стабильная версия AGP (например, 8.2.0 или выше), так как старые версии некорректно обрабатывают метаданные Kotlin.
Проверка после исправления
После любого из решений выполните File > Invalidate Caches and Restart в Android Studio, затем синхронизируйте проект заново. Предупреждение должно исчезнуть.
<<Альтернативный подход: Использование `kotlin("stdlib")`
Если вы предпочитаете более лаконичный синтаксис, можно использовать функцию kotlin() из Kotlin DSL. Вместо явного указания строки с артефактом:
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.0")
Напишите так:
implementation(kotlin("stdlib"))
Это автоматически подставит версию, соответствующую версии плагина Kotlin, указанной в plugins. Данный подход особенно удобен, если вы используете несколько модулей — не нужно дублировать версию в каждом файле.
Дополнительная проверка
Иногда предупреждение может быть ложным срабатыванием Android Studio. Попробуйте:
- Очистить кэш:
./gradlew clean - Пересобрать проект:
./gradlew assembleDebug - Проверить, не указана ли версия Kotlin в
gradle.propertiesчерез переменнуюkotlin.version
Если после всех шагов предупреждение остаётся, но проект собирается без ошибок, можно просто игнорировать его — это известная проблема Android Studio, связанная с кэшированием метаданных.
Ответов пока нет.
Войдите чтобы оставить ответ