Ошибка KaptExecution при сборке Android проекта с Kotlin: что делать?
Причина ошибки KaptExecution
Ошибка org.jetbrains.kotlin.gradle.internal.KaptExecution возникает, когда процесс обработки аннотаций (kapt) не может выполниться из-за проблем в коде, зависимостях или настройках Gradle. В вашем случае, судя по фрагменту лога и использованию Dagger Hilt и Room, проблема, скорее всего, в несовместимости версий или неправильном использовании аннотаций.
Наиболее частая причина: несовместимость версий Hilt и Kotlin
Hilt 2.44 требует Kotlin 1.8.0 или выше, а также совместимую версию плагина kotlin-kapt. Убедитесь, что в вашем корневом build.gradle.kts (project-level) указана актуальная версия Kotlin:
// project-level build.gradle.kts
plugins {
id("com.android.application") version "8.2.0" apply false
id("org.jetbrains.kotlin.android") version "1.9.22" apply false
}
Решение: проверка и исправление всех частей
Выполните последовательно:
- Шаг 1: Обновите Kotlin до версии 1.9.22 (или новее, но совместимой с вашей версией Android Gradle Plugin).
- Шаг 2: Обновите Hilt до последней стабильной версии (на момент написания — 2.51.1). В
build.gradle.ktsзамените:
// app-level build.gradle.kts
plugins {
id("kotlin-kapt")
}
dependencies {
implementation("com.google.dagger:hilt-android:2.51.1")
kapt("com.google.dagger:hilt-android-compiler:2.51.1")
// Room тоже лучше обновить
implementation("androidx.room:room-runtime:2.6.1")
kapt("androidx.room:room-compiler:2.6.1")
}
- Шаг 3: Проверьте, что все классы, использующие аннотации Hilt (например,
@HiltAndroidApp,@AndroidEntryPoint,@Inject), корректно объявлены. Например, Application класс:
@HiltAndroidApp
class MyApplication : Application()
- Шаг 4: Убедитесь, что ваша Entity-модель (например,
User) имеет конструктор без параметров или использует аннотацию@Entityкорректно. Пример:
@Entity(tableName = "user")
data class User(
@PrimaryKey val id: Int,
val name: String
)
- Шаг 5: Выполните
Build -> Clean Projectи затемBuild -> Rebuild Project.
Если ошибка осталась — смотрите полный лог
Откройте вкладку Build в Android Studio и найдите строку * What went wrong:. Там будет указан точный файл и строка, где возникла проблема. Часто это бывает из-за отсутствия импорта, неправильного типа или конфликта библиотек. Также попробуйте добавить в app/build.gradle.kts:
kapt {
correctErrorTypes = true
}
Это иногда помогает при неочевидных ошибках в сгенерированном коде.
<<Альтернативный подход: откат на более стабильные версии
Если обновление не помогло, попробуйте откатиться на проверенные стабильные версии. Например, для проектов на Kotlin 1.7.20 используйте Hilt 2.44 и Room 2.5.0. Иногда свежие версии библиотек содержат баги, несовместимые с вашей конфигурацией.
Также проверьте, не конфликтуют ли зависимости. В app/build.gradle.kts добавьте:
configurations.all {
resolutionStrategy {
force("org.jetbrains.kotlin:kotlin-stdlib:1.9.22")
}
}
Это принудительно установит единую версию Kotlin stdlib.
И последнее: если вы используете Java 8 или Java 11 в настройках compileOptions, убедитесь, что они совместимы с вашими библиотеками. В android блоке добавьте:
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = "17"
}
Это особенно важно для Hilt 2.50+ и Room 2.6+.
Ответов пока нет.
Войдите чтобы оставить ответ