My AppModule
вылетает во время компиляции с ошибкой:
error: .App cannot be provided without an @Inject constructor or from an @Provides-annotated method.
public abstract .vcs.IGitHubApi getGitHubApi();
^
.App is injected at
.AppModule.provideOAuth2Interceptor(app)
.vcs.OAuth2Interceptor is injected at
.AppModule.provideOkHttpClient(…, oAuth2Interceptor)
okhttp3.OkHttpClient is injected at
.AppModule.provideRetrofit(httpClient, …)
retrofit2.Retrofit is injected at
.AppModule.provideGitHubApi(retrofit)
.vcs.IGitHubApi is provided at
.AppComponent.getGitHubApi()
Вот мой AppModule
класс:
@Module
class AppModule {
// other providers
@Singleton
@Provides
fun provideOAuth2Interceptor(app: App): OAuth2Interceptor {
return OAuth2Interceptor(app)
}
}
AppComponent
:
@Singleton
@Component(modules = [AppModule::class])
interface AppComponent {
// other methods
fun inject(app: App)
@Component.Builder
interface Builder {
@BindsInstance
fun context(context: Context): Builder
fun build(): AppComponent
}
}
И мой App
класс, где я инициализирую AppComponent
:
class App: Application() {
override fun onCreate() {
super.onCreate()
DaggerAppComponent.builder()
.context(this)
.build()
.inject(this)
}
}
Я понимаю, что Кинжал не может найти App
, чтобы построить provideOAuth2Interceptor
, но я неНе знаю, как вводить App
в провайдера.
PS Я учусь Кинжал все еще.