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

点击注册按钮APP崩溃,FirebaseApp未初始化问题求助

问题解决:Firebase未初始化导致APP崩溃

异常信息

IllegalStateException: Default FirebaseApp is not initialized in this process typroject. Make sure to call FirebaseApp.initializeApp(Context) first。

问题场景

点击注册按钮时APP崩溃,使用Firebase Auth和Database功能,自行添加的Firebase相关依赖如下:

implementation 'com.google.firebase:firebase-auth:21.1.0'
implementation 'com.google.firebase:firebase-database:20.1.0'
implementation 'com.google.firebase:firebase-firestore:24.4.2'
implementation 'com.google.firebase:firebase-storage:20.1.0'

RegisterActivity代码:

package com.example.typroject;

public class registerActivity extends AppCompatActivity {
    private DatabaseReference mRootref;
    private FirebaseAuth mAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        mRootref = FirebaseDatabase.getInstance().getReference();
        mAuth = FirebaseAuth.getInstance();
        register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String txtUsername = username.getText().toString();
                String txtName = name.getText().toString();
                String txtemail = email.getText().toString();
                String txtpassword = password.getText().toString();

                if(TextUtils.isEmpty(txtUsername) || TextUtils.isEmpty(txtName) || TextUtils.isEmpty(txtemail) || TextUtils.isEmpty(txtpassword)){
                    Toast.makeText(registerActivity.this, "Empty Credentials", Toast.LENGTH_SHORT).show();
                } else if (txtpassword.length() < 6) {
                    Toast.makeText(registerActivity.this, "Password is too Short", Toast.LENGTH_SHORT).show();
                }else {
                    registeruser(txtUsername, txtName , txtemail , txtpassword );
//                    startActivity(new Intent(registerActivity.this , MainActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP));
                }

            }


        });
    }


    private void registeruser(String Username, String Name, String email, String password) {
        mAuth.createUserWithEmailAndPassword(email, password).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
            @Override
            public void onSuccess(AuthResult authResult) {
                HashMap<String , Object> map = new HashMap<>();
                map.put("username" , username);
                map.put("name" , name);
                map.put("email" , email);
                map.put("password" , password);
                map.put("id" , mAuth.getCurrentUser().getUid());

                mRootref.child("Users").child(mAuth.getCurrentUser().getUid()).setValue(map).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        Intent intent = new Intent(registerActivity.this , MainActivity.class);
                        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        startActivity(intent);
                        finish();
                    }
                });
            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Toast.makeText(registerActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
    }
}

解决方案

1. 补充Firebase配置文件与插件

  • 从Firebase控制台下载google-services.json文件,放置到app模块根目录(与app/build.gradle同级)。
  • 确认项目级build.gradle中添加Google Services插件依赖:
    buildscript {
        dependencies {
            classpath 'com.google.gms:google-services:4.4.0' // 或最新兼容版本
        }
    }
    
  • 在app级build.gradle末尾添加插件应用代码:
    apply plugin: 'com.google.gms.google-services'
    

2. 统一Firebase依赖版本

不同Firebase组件版本不一致会引发初始化异常,推荐用Firebase BOM统一管理版本:

// 在app级build.gradle中添加BOM依赖
implementation platform('com.google.firebase:firebase-bom:32.7.0') // 使用最新稳定版本

// 移除各组件的版本号,由BOM统一管理
implementation 'com.google.firebase:firebase-auth'
implementation 'com.google.firebase:firebase-database'
implementation 'com.google.firebase:firebase-firestore'
implementation 'com.google.firebase:firebase-storage'

3. 可选:手动初始化Firebase

若自动初始化失败,可自定义Application类手动初始化:

  1. 创建自定义Application类:
package com.example.typroject;

import android.app.Application;
import com.google.firebase.FirebaseApp;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        FirebaseApp.initializeApp(this);
    }
}
  1. 在AndroidManifest.xml中指定该Application:
<application
    android:name=".MyApplication"
    ...>
    ...
</application>

4. 修复代码中的其他潜在问题

  • View未初始化:register、username等View需在onCreate中用findViewById绑定,否则会抛出NullPointerException:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        // 绑定View(替换为你的实际控件ID)
        Button register = findViewById(R.id.register_btn);
        EditText username = findViewById(R.id.username_et);
        EditText name = findViewById(R.id.name_et);
        EditText email = findViewById(R.id.email_et);
        EditText password = findViewById(R.id.password_et);
    
        mRootref = FirebaseDatabase.getInstance().getReference();
        mAuth = FirebaseAuth.getInstance();
        // 后续代码...
    }
    
  • 数据存储错误:registeruser方法中,map存储的是View对象而非用户输入文本,应改为传入的参数:
    map.put("username", Username); // 替换原代码中的username(View对象)
    map.put("name", Name); // 替换原代码中的name(View对象)
    
  • 类名规范:registerActivity应改为RegisterActivity,符合Java大驼峰命名规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:50:23