Hilt Unsupported metadata version в Kotlin: как исправить ошибку при сборке Android-проекта
Причина ошибки
Ошибка Unsupported metadata version in Kotlin возникает из-за несовместимости версий Kotlin и Hilt. Hilt использует kapt для генерации кода, и каждая версия Hilt поддерживает только определённый диапазон версий Kotlin. В вашем случае Kotlin 1.9.20 требует Hilt 2.50+ (или более новую версию), а вы используете Hilt 2.48.
Решение
Есть два надёжных способа исправить проблему:
Способ 1: Обновить Hilt до совместимой версии
Измените версию Hilt в build.gradle.kts (обычно в корневом файле проекта):
// build.gradle.kts (project-level)
plugins {
id("com.google.dagger.hilt.android") version "2.50" apply false
}
// build.gradle.kts (app)
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("kotlin-kapt")
id("dagger.hilt.android.plugin")
}
dependencies {
implementation("com.google.dagger:hilt-android:2.50")
kapt("com.google.dagger:hilt-compiler:2.50")
implementation("androidx.hilt:hilt-navigation-compose:1.1.0")
}
Способ 2: Использовать Hilt с KSP вместо kapt (рекомендуется)
KSP (Kotlin Symbol Processing) работает быстрее kapt и лучше поддерживает новые версии Kotlin. Для этого:
- Добавьте плагин KSP в корневой
build.gradle.kts:
// build.gradle.kts (project-level)
plugins {
id("com.google.devtools.ksp") version "1.9.20-1.0.14" apply false
}
- Измените
build.gradle.kts(app):
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("com.google.devtools.ksp") // вместо kotlin-kapt
id("dagger.hilt.android.plugin")
}
dependencies {
implementation("com.google.dagger:hilt-android:2.50")
ksp("com.google.dagger:hilt-compiler:2.50") // ksp вместо kapt
implementation("androidx.hilt:hilt-navigation-compose:1.1.0")
}
Проверка совместимости
Актуальную таблицу совместимости можно найти в официальной документации Hilt. На момент написания ответа:
- Hilt 2.48 поддерживает Kotlin 1.8.0 - 1.9.0
- Hilt 2.50 поддерживает Kotlin 1.9.0 - 1.9.22
- Для Kotlin 2.0+ нужна Hilt 2.51+
Дополнительные советы
- Всегда синхронизируйте версии Hilt в
implementationиkapt/ksp. - Проверьте, что в
gradle-wrapper.propertiesиспользуется версия Gradle 8.2+ для Hilt 2.50. - После изменений выполните:
Build -> Clean ProjectиBuild -> Rebuild Project.
Альтернативное решение: понижение версии Kotlin
Если по какой-то причине вы не можете обновить Hilt (например, из-за других зависимостей), можно понизить Kotlin до версии, совместимой с Hilt 2.48.
В корневом build.gradle.kts укажите:
// build.gradle.kts (project-level)
plugins {
id("org.jetbrains.kotlin.android") version "1.9.0" apply false
}
И в composeOptions используйте совместимую версию Kotlin Compiler Extension:
composeOptions {
kotlinCompilerExtensionVersion = "1.5.4" // для Kotlin 1.9.0
}
Важно: Этот подход временный. Рекомендуется мигрировать на KSP и актуальные версии библиотек, так как kapt объявлен устаревшим и в будущих версиях Kotlin может быть удалён.
Также проверьте, что в gradle.properties нет устаревших флагов kapt, которые могут мешать:
kapt.use.worker.api=true
kapt.incremental.apt=true
После изменений синхронизируйте проект и пересоберите.
Ответов пока нет.
Войдите чтобы оставить ответ