Android Hilt не будет работать с добавленными плагинами

#android #dagger-hilt

Вопрос:

У меня есть вопросы по поводу Android hilt.
Я добавил плагин hilt.

 //build.gradle(:project)
buildscript {
   ext.hilt_version = '2.37'
   dependencies {
      ...
      classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
   }
}
 
 //build.gradle(:app)
plugins {
   ...
   id 'kotlin-kapt'
   id 'dagger.hilt.android.plugin'
}

dependencies {
   implementation "com.google.dagger:hilt-android:$hilt_version"
   kapt "com.google.dagger:hilt-compiler:$hilt_version"
}
 
 //MyApplication.kt
@HiltAndroidApp
class MyApplication : Application() {...}
 

Когда я создам проект,
Я получаю сообщение об ошибке со словами
«Ожидалось, что @HiltAndroidApp будет иметь значение. Вы забыли применить плагин Gradle?»
У тебя есть какие-нибудь идеи?

Комментарии:

1. Вы забыли применить плагин Gradle? Или просто добавил его в качестве иждивенца?

2. Я бы просто скопировал и вставил значения из документации: developer.android.com/training/dependency-injection/… Если вы используете «или», это может иметь значение для gradle

3. Я скопировал на основе документации, и произошла ошибка. Кроме того, я не использую комнату. Существуют ли несовместимые библиотеки, которые могут вызвать сбои в работе hilt?

Ответ №1:

У меня также есть такая же проблема в моих новых проектах. Эта ошибка произошла после понижения версии kotlin до 1.5.10. Я думаю, что у hilt проблемы с совместимостью с последним плагином kotlin.

Комментарии:

1. Спасибо @naresh-dhakecha . Та же проблема возникает со мной, если я использую Kotlin версии 1.5.20.

Ответ №2:

Как упоминали другие, в Kotlin 1.5.20 есть ошибка в Kapt, которая вызывает эту проблему.

Он зафиксирован в 1.5.21. Просто увеличьте версию, и все будет хорошо.

Ответ №3:

В версии 1.5.20 есть ошибка, чтобы избежать этой ошибки, существует обходной путь. в build.gradle (app) файл вставьте этот код ниже. как правило, в плагине hilt Gradle эти параметры устанавливаются автоматически. в версии 1.5.20 этого нет. если вы установите его вручную, это решит проблему.

 kapt {
javacOptions {
    option("-Adagger.fastInit=ENABLED")
    option("-Adagger.hilt.android.internal.disableAndroidSuperclassValidation=true")
}}