【发布时间】:2020-04-16 07:39:00
【问题描述】:
我正在使用 Kotlin 和 Dagger 2 开发一个 Android 项目。我有一个 NetworkModule,它应该提供一个 Retrofit 的单例实例。我在其中定义了所有这些提供程序功能。
下面的所有代码 sn-p 都在 NetworkModule 内:
@Module
object NetworkModule {
...
}
我的第一个问题:
我想为OkHttpClient 提供HttpLoggingInterceptor 的单例。这是我尝试过的:
@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?
【问题讨论】:
标签: android retrofit2 dagger-2 okhttp retrofit2.6