Перестал собираться проект после перехода Hilt с 2.28 на 2.32
При обнвлении Hilt с версии 2.28 до 2.32 перестал собираться проект.
Вносил изменения только во ViewModel @ViewModelInject на @Inject и добавил @HiltViewModel.
Модуль, в котором собираю зависимости
@Module
@InstallIn(ActivityComponent::class)
object ActivityModule {
@Provides
fun providesFirebaseUser(
firebaseAuth: FirebaseAuth
): FirebaseUser {
return firebaseAuth.currentUser!!
}
@Provides
fun providesFirebaseDatabase(): FirebaseDatabase {
return Firebase
.database
}
@Provides
fun providesFirebaseAuth(): FirebaseAuth {
return Firebase.auth
}
@Provides
fun providesFirebaseDatabaseUserRoot(
firebaseDatabase: FirebaseDatabase,
firebaseUser: FirebaseUser
): DatabaseReference {
return firebaseDatabase
.reference
.child("USERS")
.child(firebaseUser.uid)
}
@Provides
fun providesFirebaseAnalytics(
@ApplicationContext context: Context
): FirebaseAnalytics {
return FirebaseAnalytics.getInstance(context)
}
@Provides
fun providesScopeStore(
firebaseDatabaseUserRoot: DatabaseReference
): ScopeStore {
return ScopeStore(
firebaseDatabaseUserRoot
)
}
@Provides
fun providesSettingsStore(
firebaseDatabaseUserRoot: DatabaseReference
): SettingsStore {
return SettingsStore(
firebaseDatabaseUserRoot
)
}
@Provides
fun providesTemplateStore(
firebaseDatabaseUserRoot: DatabaseReference
): TemplateStore {
return TemplateStore(
firebaseDatabaseUserRoot
)
}
@Provides
fun providesVariableStore(
firebaseDatabaseUserRoot: DatabaseReference
): VariableStore {
return VariableStore(
firebaseDatabaseUserRoot
)
}
@Provides
fun providesServiceCreator(): ServiceCreator {
return ServiceCreator()
}
}
Конструктор объекта, в который прокидывается DatabaseReference
class ScopeStore
@Inject
constructor(
private val firebaseDatabaseUserRoot: DatabaseReference
)
Лог:
/home/nikita/StudioProjects/Wesolient/app/build/generated/source/kapt/debug/com/vastausf/wesolient/Wesolient_HiltComponents.java:152: error: [Dagger/MissingBinding] com.google.firebase.database.DatabaseReference cannot be provided without an @Inject constructor or an @Provides-annotated method.
public abstract static class SingletonC implements Wesolient_GeneratedInjector,
^
com.google.firebase.database.DatabaseReference is injected at
com.vastausf.wesolient.model.store.VariableStore(firebaseDatabaseUserRoot)
com.vastausf.wesolient.model.store.VariableStore is injected at
com.vastausf.wesolient.presentation.ui.dialog.createVariable.CreateVariableViewModel(…, variableStore)
com.vastausf.wesolient.presentation.ui.dialog.createVariable.CreateVariableViewModel is injected at
com.vastausf.wesolient.presentation.ui.dialog.createVariable.CreateVariableViewModel_HiltModules.BindsModule.binds(vm)
@dagger.hilt.android.internal.lifecycle.HiltViewModelMap java.util.Map<java.lang.String,javax.inject.Provider<androidx.lifecycle.ViewModel>> is requested at
dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.ViewModelFactoriesEntryPoint.getHiltViewModelMap() [com.vastausf.wesolient.Wesolient_HiltComponents.SingletonC → com.vastausf.wesolient.Wesolient_HiltComponents.ActivityRetainedC → com.vastausf.wesolient.Wesolient_HiltComponents.ViewModelC]
It is also requested at:
com.vastausf.wesolient.model.store.ScopeStore(firebaseDatabaseUserRoot)
com.vastausf.wesolient.model.store.SettingsStore(firebaseDatabaseUserRoot)
com.vastausf.wesolient.model.store.TemplateStore(firebaseDatabaseUserRoot)
Ответы (1 шт):
Автор решения: Vastaus
→ Ссылка
Решение: Заменить скоуп модуля ActivityComponent на ViewModelComponent