#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")
}}