FirebaseFirestore不能在没有@Inject构造函数或@ providers注释方法的情况下提供



我在以下问题上挣扎,我找不到解决方案。我有多模块的项目。我设置了所有的模块和依赖项,但我仍然得到firestore这个错误:error: [Dagger/MissingBinding] com.google.firebase.firestore

我的DI设置遵循

FirebaseDiModule(firestore模块的一部分)

@Module
@InstallIn(SingletonComponent::class)
object FirebaseDiModule {
@Singleton
@Provides
fun provideFirebaseAuth(): FirebaseAuth {
return FirebaseAuth.getInstance()
}
@Singleton
@Provides
fun provideFirestoreFirebase(): FirebaseFirestore {
return FirebaseFirestore.getInstance()
}
@Singleton
@Provides
fun provideUserFirebaseDataSource(
firebaseFirestore: FirebaseFirestore,
firebaseAuth: FirebaseAuth,
): UserFirestoreDataSource {
return UserFirestoreDataSource(
firebaseFirestore = firebaseFirestore,
firebaseAuth = firebaseAuth,
)
}
}

UserFirestoreDataSource (firebase模块的一部分)

class UserFirestoreDataSource @Inject constructor(
private val firebaseFirestore: FirebaseFirestore,
private val firebaseAuth: FirebaseAuth,
)

然后我有认证模块,这是一个包含jetpack组成和视图模型的功能模块。

我使用的ViewModel是这样设置的:

@HiltViewModel
class OnBoardingViewModel @Inject constructor(
userFirestoreDataSource: UserFirestoreDataSource,
) : ViewModel() {

认证模块被添加到我使用OnBoardingViewModel和可组合组件的应用模块中。

在app模块中,我有这个:

@HiltAndroidApp
class AppController : Application()
class MainActivity : ComponentActivity()

当我运行项目时,我得到以下错误:

error: [Dagger/MissingBinding] com.google.firebase.firestore.FirebaseFirestore cannot be provided without an @Inject constructor or an @Provides-annotated method.
public abstract static class SingletonC implements AppController_GeneratedInjector,

但是这个错误只发生当我添加@HiltViewModel注释到OnBoardingViewModel。这个问题让我很沮丧,我不知道我做错了什么。

没有什么可尝试的,因为它是一个DI设置。

你需要创建一个@HiltViewModel类,并用@HiltViewModel注释它。

下面是一个示例代码:
@HiltViewModel
class OnBoardingViewModel @ViewModelInject constructor(
userFirestoreDataSource: UserFirestoreDataSource
) : ViewModel() {
//ViewModel code
}

就像告诉DI (@ViewModelInject)嘿,这是一个ViewModel类注入必要的依赖到ViewModel

最新更新