#android #android-studio #kotlin #dependency-injection #dagger-hilt
Вопрос:
Добавлены зависимости рукояти:
Build.gradle(проект)
def hilt_version = "2.38.1"
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
Build.gradle(приложение)
plugins {
id 'dagger.hilt.android.plugin'
....
}
....
dependencies {
implementation "com.google.dagger:hilt-android:2.38.1"
kapt "com.google.dagger:hilt-compiler:2.38.1"
.......
}
У меня также есть глобальный класс приложений:
Мое приложение.кт
@HiltAndroidApp
class MyApplication : Application()
В моем манифесте:
Manifest.xml
<application
android:allowBackup="true"
android:name=".global.MyApplication"/>
Теперь я создаю модуль
Сетевой модуль.kt
@Module
@InstallIn(SingletonComponent::class)
class NetworkModule {
}
Я получаю ошибку при запуске своего кода:
**Не удалось выполнить задачу»: приложение:kaptDebugKotlin».
При выполнении org.jetbrains произошел сбой.kotlin.gradle.внутренний.KaptExecution java.язык.отражение.Исключение InvocationTargetException (нет сообщения об ошибке)**
Когда я удаляю их: @Module() и @InstallIn()
Ошибка исчезает…
в чем может быть проблема? Показанная мне ошибка совсем не информативна.
Комментарии:
1. Вы добавили
kotlin-kapt
плагин вbuild.gradle
?2. Да, это там: идентификатор «котлин-капт» @LucaPizzini
Ответ №1:
Итак, похоже, что существует проблема с интеграцией Hilt при таргетинге на версию 31 (Android 12).
Когда у меня был:
compileSdkVersion 31
buildToolsVersion "31.0.0"
defaultConfig {
minSdkVersion 21
targetSdkVersion 31
}
Появится сообщение об ошибке…
но когда я перешел на:
compileSdkVersion 30
buildToolsVersion "30.0.3"
defaultConfig {
minSdkVersion 21
targetSdkVersion 30
}
Он начинает работать без этой ошибки..
Что-то не так с интеграцией Hilt при ориентации на Android 12 (вероятно)
Ответ №2:
Выполните действия, чтобы добавить зависимости hilt, как указано на приведенном ниже сайте, после чего ошибка будет устранена
Ответ №3:
Я обновил свой проект до Java 11 в файле модуля gradle.
android {
compileSdkVersion 31
buildToolsVersion "30.0.2"
compileOptions {
sourceCompatibility 11
targetCompatibility 11
}
kotlinOptions {
jvmTarget = "11"
}
И я обновил до последних плагинов gradle