Ошибка Gradle: устаревшие функции несовместимы с Gradle 5.0 при сборке Android
Причина ошибки
Ошибка "Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0" возникает не из-за версии Gradle в вашем проекте, а из-за того, что один из плагинов или зависимостей использует устаревший API, который будет удалён в Gradle 5.0. Это предупреждение о будущей несовместимости, даже если вы используете более новую версию Gradle (7.x).
В вашем случае проблема, скорее всего, связана с плагином kotlin-kapt (или другим плагином), который в некоторых версиях использует устаревшие методы Gradle. Также это может быть вызвано конфликтом версий плагинов Android Gradle Plugin (AGP) и Kotlin.
Решение
Вот пошаговый план исправления:
- Обновите все плагины до последних стабильных версий
- Замените
kaptнаksp(если возможно) - Добавьте флаг для игнорирования предупреждения (временное решение)
Шаг 1: Обновите версии в корневом build.gradle.kts:
plugins {
id("com.android.application") version "8.1.0" apply false
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
}
Шаг 2: В модуле app замените kapt на ksp (если вы используете kapt только для обработки аннотаций):
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("com.google.devtools.ksp") version "1.9.0-1.0.13"
}
// Удалите строку: id("org.jetbrains.kotlin.kapt")
Шаг 3: Если обновление не помогло, добавьте в gradle.properties:
android.useAndroidX=true
kotlin.code.style=official
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
org.gradle.warning.mode=all
Шаг 4: Полный исправленный build.gradle.kts (модуль app):
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
}
android {
namespace = "com.example.myapp"
compileSdk = 34
defaultConfig {
applicationId = "com.example.myapp"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
}
dependencies {
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.appcompat:appcompat:1.6.1")
testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
}
tasks.test {
useJUnitPlatform()
}
Альтернативное решение (временный фикс)
Если срочно нужно собрать проект, добавьте в gradle.properties:
org.gradle.warning.mode=none
Это скроет предупреждения, но не решит проблему. Используйте только для отладки!
Проверка после исправлений
- Выполните
./gradlew clean - Удалите папку
.gradleв корне проекта - Запустите
./gradlew test --warning-mode all— предупреждение должно исчезнуть
Если ошибка остаётся, проверьте, не используете ли вы устаревшие плагины в других модулях (например, com.google.gms.google-services или kotlinx-serialization).
Другой подход: диагностика через Gradle Wrapper
Иногда проблема кроется не в вашем коде, а в самом Gradle Wrapper. Попробуйте следующий метод:
- Проверьте версию Gradle Wrapper — откройте файл
gradle/wrapper/gradle-wrapper.properties. Убедитесь, что там указана версия 7.5 или выше (например,distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip). - Обновите Wrapper — выполните команду в терминале:
./gradlew wrapper --gradle-version 8.2. Это пересоздаст wrapper с новой версией Gradle. - Проверьте конфликты плагинов — временно закомментируйте все плагины в
build.gradle.kts(кромеcom.android.applicationиkotlin.android) и запустите сборку. Если ошибка исчезнет, добавляйте плагины по одному, чтобы найти виновника.
Чаще всего проблема вызывается плагином kotlin-kapt или старыми версиями com.google.dagger.hilt.android. Если вы используете Hilt, обновите его до версии 2.48+ и замените kapt на ksp.
Также проверьте, нет ли в проекте файла build.gradle (не .kts) со старым синтаксисом — иногда он остаётся после миграции с Groovy на Kotlin DSL.
Ответов пока нет.
Войдите чтобы оставить ответ