с кинжалом и котлином.Когда я скомпилировал следующий код:
@Module
class NetworkModule {
@Provides
fun retrofit() = {
Retrofit.Builder()
.baseUrl(Constant.URL.BASE_URL)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build()
}
}
Сборка завершается неудачей со следующей неясной ошибкой:
/Users/saurabh/Saurabh/google-sample-mvp-rxjava/UserListApp-AndroidClient-Kotlin/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/com/example/saurabh/userappmvp/databinding/ItemUserBinding.java:49: error: cannot find symbol
protected ItemUserBinding(DataBindingComponent _bindingComponent, View _root,
^
symbol: class DataBindingComponent
location: class ItemUserBinding
e: /Users/saurabh/Saurabh/google-sample-mvp-rxjava/UserListApp-AndroidClient-Kotlin/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/com/example/saurabh/userappmvp/databinding/ItemUserBinding.java:80: error: cannot find symbol
boolean attachToRoot, @Nullable DataBindingComponent component) {
^
symbol: class DataBindingComponent
location: class ItemUserBinding
e: /Users/saurabh/Saurabh/google-sample-mvp-rxjava/UserListApp-AndroidClient-Kotlin/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/com/example/saurabh/userappmvp/databinding/ItemUserBinding.java:91: error: cannot find symbol
@Nullable DataBindingComponent component) {
^
symbol: class DataBindingComponent
location: class ItemUserBinding
e: /Users/saurabh/Saurabh/google-sample-mvp-rxjava/UserListApp-AndroidClient-Kotlin/app/build/generated/data_binding_base_class_source_out/debug/dataBindingGenBaseClassesDebug/out/com/example/saurabh/userappmvp/databinding/ItemUserBinding.java:99: error: cannot find symbol
public static ItemUserBinding bind(@NonNull View view, @Nullable DataBindingComponent component) {
^
symbol: class DataBindingComponent
location: class ItemUserBinding
e: /Users/saurabh/Saurabh/google-sample-mvp-rxjava/UserListApp-AndroidClient-Kotlin/app/build/tmp/kapt3/stubs/debug/com/example/saurabh/userappmvp/dependency/UserComponent.java:9: error: [Dagger/MissingBinding] com.example.saurabh.userappmvp.datasource.remote.UserOperation cannot be provided without an @Provides-annotated method.
public abstract void inject(@org.jetbrains.annotations.NotNull()
^
com.example.saurabh.userappmvp.datasource.remote.UserOperation is injected at
com.example.saurabh.userappmvp.datasource.remote.RemoteDbHelper.<init>(userOperation)
com.example.saurabh.userappmvp.datasource.remote.RemoteDbHelper is injected at
com.example.saurabh.userappmvp.dependency.RepositoryModule.remoteDataSource(remoteDbHelper)
@javax.inject.Named("remote") com.example.saurabh.userappmvp.datasource.UserRepositoryContract is injected at
com.example.saurabh.userappmvp.datasource.UserRepository.<init>(…, remote)
com.example.saurabh.userappmvp.datasource.UserRepository is injected at
com.example.saurabh.userappmvp.userlist.presentation.UserListFragment.repository
com.example.saurabh.userappmvp.userlist.presentation.UserListFragment is injected at
com.example.saurabh.userappmvp.dependency.UserComponent.inject(com.example.saurabh.userappmvp.userlist.presentation.UserListFragment)
После 2 дней борьбы я понял, что это связано с назначением анонимной функциик функции обеспечивает.Я обновил код и удалил анонимную функцию, затем она скомпилировалась без ошибок.
Надеюсь, это поможет другим, кто борется с той же проблемой.
Рабочий код.
@Module
class NetworkModule {
@Provides
fun retrofit() : Retrofit {
return Retrofit.Builder()
.baseUrl(Constant.URL.BASE_URL)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build()
}
}
Может кто-нибудь объяснить, почему предыдущий код с анонимной функцией не компилировался?