“只能在常量表达式中使用const val”编译时错误Dagger2 Kotlin

时间:2019-04-18 12:08:51

标签: android kotlin dagger-2

无法构建项目以创建依赖项注入。我已经成功地用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 个答案:

答案 0 :(得分:2)

您错过了Application模块文件中的打包行。

将此行放入package com.example.daggerappkotlin.di.module  在您的ApplicationModule文件顶部