我正在使用 Kotlin 和 Dagger 2 开发一个 Android 项目。我有一个NetworkModule
它应该提供 Retrofit 的单例实例。我在其中定义了所有这些提供程序功能。
下面的所有代码片段都在里面NetworkModule
:
@Module
object NetworkModule {
...
}
我的第一个问题:
我想提供一个HttpLoggingInterceptor
for的单例OkHttpClient
。这是我尝试过的:
@Provides
internal fun provideLoggingInterceptor(): Interceptor {
// compiler error: Unresolved reference 'setLevel', unresolved reference 'Level'
return HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
}
但是我得到一个编译错误:Unresolved reference 'setLevel'
并且Unresolved reference 'Level'
,如何摆脱它?
我的第二个问题:
我将 OkHttpClient 提供程序函数定义为:
@Provides
internal fun provideOkHttpClient(loggingInterceptor: Interceptor): OkHttpClient {
return OkHttpClient.Builder()
.addInterceptor(loggingInterceptor)
...
.build()
}
我怎样才能使它只有addInterceptor(loggingInterceptor)
在调试模型中,而在发布模式下才 HttpLoggingInterceptor
在上面的提供程序函数中添加?