如何注入依赖项

问题描述 投票:0回答:1

我正在尝试注入 GoogleSignIn 但在构建时抛出异常错误: [Dagger/MissingBinding] com.google.android.gms.auth.api.signin.GoogleSignInClient 无法在没有 @Inject 构造函数或 @Provides-annotated 方法的情况下提供。

这是我的文件

@Module
@InstallIn(ViewModelComponent::class)
object AppModule {
    @Provides
    @ViewModelScoped
    fun providesGoogleSignInOptions(@ApplicationContext context: Context) =
        GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(context.getString(R.string.web_client_id))
            .requestEmail()
            .build()

    @Provides
    @ViewModelScoped
    fun providesGoogleSignInClient(gso: GoogleSignInOptions,@ApplicationContext context: Context) =
        GoogleSignIn.getClient(context, gso)
}

我不知道发生了什么或如何处理

我尝试寻找类似的东西,但找不到它,我花了几乎一天的时间才找到问题,但似乎不起作用。

android kotlin authentication dependency-injection dagger-hilt
1个回答
0
投票

我没有遇到过这个错误,但这是我根据我的研究收集的。

  1. Dagger 组件检查: 首先,确保您的 Dagger 设置包含

    ViewModelComponent
    。如果您使用 Hilt,
    @InstallIn(ViewModelComponent::class)
    注释应该会自动处理此问题。

  2. 使用@Provides方法: 由于

    GoogleSignInClient
    没有直接的注入方法,因此您需要指导 Dagger 如何使用
    @Provides
    方法创建它。你的代码在这方面看起来不错。

  3. 依赖项可用性: 仔细检查是否正确提供了创建

    GoogleSignInClient
    实例所需的所有必要部分,例如
    GoogleSignInOptions
    Context

  4. 上下文澄清: 确保

    @ApplicationContext
    确实提供应用程序上下文。您需要此上下文来获取
    GoogleSignInClient

  5. 匕首绑定评论: 彻底检查您的 Dagger 设置。有时,与

    GoogleSignInClient
    相关的绑定丢失或冲突可能会导致问题。

  6. 清洁和重建: Dagger 生成的代码可能出现问题。通过清理和重建项目,让您的项目焕然一新,以确保 Dagger 生成的代码是新鲜的。

  7. Google 登录配置检查: 验证您的 Google 登录设置,包括 Google API 控制台中的配置以及

    build.gradle
    文件中的依赖项。

  8. 依赖冲突检查: 确保没有冲突的依赖关系扰乱 Dagger 或 Google Sign-In。

如果您仍然对此摸不着头脑,请分享更多详细信息或完整的错误消息,我会更深入地帮助您。

© www.soinside.com 2019 - 2024. All rights reserved.