You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

注入GoogleSignInClient实现Firebase认证出现空指针异常如何解决

问题根源

你遇到的空指针是因为GoogleSignInClient没有被Dagger2成功注入到AuthActivity,核心遗漏了3处配置:

1. AppComponent缺少注入目标声明

你当前的AppComponent没有声明要注入的目标Activity,Dagger2不知道需要给AuthActivity里的@Inject字段赋值。
修改后的AppComponent代码如下:

@Singleton // 必须加,因为Module里的依赖声明了Singleton作用域
@Component(modules = {AuthModule.class, AppModule.class})
public interface AppComponent {
    // 新增注入方法,指定注入目标为AuthActivity
    void inject(AuthActivity authActivity);

    @Component.Builder
    interface Builder {
        @BindsInstance
        Builder application(Application application);
        AppComponent build();
    }
}

2. 没有自定义Application类初始化全局Component

你需要在应用启动时初始化一次单例的AppComponent,首先创建自定义Application类:

public class MyApplication extends Application {
    private AppComponent appComponent;

    @Override
    public void onCreate() {
        super.onCreate();
        appComponent = DaggerAppComponent.builder()
                .application(this)
                .build();
    }

    public AppComponent getAppComponent() {
        return appComponent;
    }
}

之后要在AndroidManifest.xml的application标签中添加配置,让自定义Application生效:

<application
    android:name=".MyApplication"
    <!-- 其他原有配置 -->
    >
    <!-- Activity等组件配置 -->
</application>

3. AuthActivity没有主动触发注入

你需要在AuthActivity的onCreate生命周期中,在使用signInClient之前主动触发注入:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 先执行注入,再做其他初始化操作
    ((MyApplication) getApplication()).getAppComponent().inject(this);
    setContentView(R.layout.activity_auth);
    // 后续逻辑,比如给登录按钮绑定点击事件触发signIn()
}

其他可选检查项

如果做完上述配置还有问题,可以检查这两处:

  • 确认项目已经正确接入Firebase,google-services.json已经放到app模块根目录,根目录和app模块的build.gradle都正确配置了google-services插件,R.string.default_web_client_id能正常识别,不会为空导致GoogleSignInOptions创建失败。
  • 确认app模块的build.gradle已经正确引入Dagger2的注解处理器依赖,编译时能正常生成DaggerAppComponent类。

内容的提问来源于stack exchange,提问作者user17124758

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:36:04