«в константных выражениях может использоваться только const val» ошибка времени компиляции Dagger2 Kotlin - PullRequest
0 голосов
/ 18 апреля 2019

Невозможно построить проект для создания зависимости Injection. Я успешно построил его на Java, но при преобразовании каждого файла в Kotlin (действительно заинтригованный сейчас ...) проект не создается, поскольку есть ошибка времени компиляции

"Только 'const val' могут быть использованы n константных выражений Неразрешенная ссылка: ApplicationModule Аргумент аннотации должен быть константой времени компиляции "

Понятно для правого разработчика Kotlin, это было бы не из легких, что изменить, но это оставило меня в замешательстве.

Поскольку ApplicationModule не импортирует, я не могу построить проект.

ApplicationComponent

@Singleton
@Component(modules = [ApplicationModule::class])
interface ApplicationComponent {

    fun inject(application: MyApplication)

    @get:ApplicationContext
    val context: Context

    val networkService: NetworkService

    val databaseService: DatabaseService



}

ApplicationModule

@Module
class ApplicationModule(private val application: MyApplication) {

    @ApplicationContext
    @Provides
    internal fun provideContext(): Context {
        return application
    }

    @Provides
    @DatabaseInfo
    internal fun provideDatabaseName(): String {
        return "dummy_db"
    }

    @Provides
    @DatabaseInfo
    internal fun provideDatabaseVersion(): Int? {
        return 1
    }

    @Provides
    @NetworkInfo
    internal fun provideApiKey(): String {
        return "SOME_API_KEY"
    }
}

Error

https://github.com/BenMohammad/DaggerAppKotlin

1 Ответ

2 голосов
/ 18 апреля 2019

Вы пропустили строку пакета в файле модуля приложения.

поставить эту строку package com.example.daggerappkotlin.di.module вверху файла ApplicationModule

...