尽管在Application类中调用了FirebaseApp.initializeApp(),FirebaseApp仍未初始化

我正在创建一个Android应用程序,我目前正在尝试使用Firebase实现用户身份validation。 据我所知,我的应用已连接到我的Firebase服务器。

尝试通过按下按钮从SignIn活动切换到SignUp活动时遇到运行时错误。 应用程序崩溃,我遇到运行时错误。

据我所知,当我尝试使用FirebaseAuth.getInstance()初始化FirebaseAuth对象时,运行时错误来自SignUp活动的onCreate()调用。 此呼叫因此失败

 java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process seniordesign.phoneafriend. Make sure to call FirebaseApp.initializeApp(Context). 

但是,我在我的Application类’ onCreate()方法中进行了这个调用,我觉得这很好。 我将initalizeApp()调用添加到SignUp的onCreate()调用但没有骰子。 我已经find了这个问题的其他人,但没有find类似的东西。 谢谢你的帮助。

AndroidManifest.xml中

              

PhoneAFriend.java(我的应用程序类)

 public class PhoneAFriend extends Application { public void onCreate(){ super.onCreate(); Firebase.setAndroidContext(this); FirebaseApp.initializeApp(this); } } 

SignUp.java

 public class SignUp extends AppCompatActivity { protected Firebase ref; protected EditText emailText; protected EditText passText; protected EditText confirmText; protected Button button; protected SignUp thisContext; protected FirebaseAuth auth; protected FirebaseAuth.AuthStateListener authListener; private View.OnClickListener onClickListener; public static Intent intent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_signup); ref = new Firebase("https://phoneafriend-7fb6b.firebaseio.com"); emailText = (EditText) findViewById(R.id.signup_emailText); passText = (EditText) findViewById(R.id.signup_passwordText); confirmText = (EditText) findViewById(R.id.signup_passwordConfirm); intent = new Intent(this, SignIn.class); //Tried this already //FirebaseApp.initializeApp(this); auth = FirebaseAuth.getInstance(); button = (Button) findViewById(R.id.signup_button); onClickListener = new View.OnClickListener() { @Override public void onClick(View view) { createUser(view); Log.v("SignUp Button" , "Clicked; Attempting to create user"); } }; button.setOnClickListener(onClickListener); authListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged( FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) { // User is signed in Log.d("FirebaseAuth", "onAuthStateChanged:signed_in:" + user.getUid()); } else { // User is signed out Log.d("FirebaseAuth", "onAuthStateChanged:signed_out"); } // ... } }; thisContext = this; } @Override public void onStart(){ super.onStart(); //auth.addAuthStateListener(authListener); } @Override public void onStop(){ super.onStop(); if(authListener != null) { //auth.removeAuthStateListener(authListener); } } protected void createUser(View view){ String cString = null; String pString = null; String eString = emailText.getText().toString(); if(passText.getText() != null && confirmText.getText() != null) { pString = passText.getText().toString(); cString = confirmText.getText().toString(); Log.v("SignUP: Pass Null check" , "Pass" ); if (emailText.getText() != null && pString.equals(cString) && passText.getText() != null) { Log.v("SignUP: Sign up check " , "Pass"); auth.createUserWithEmailAndPassword(emailText.getText().toString() , passText.getText().toString()) .addOnCompleteListener(this, new OnCompleteListener() { @Override public void onComplete(@NonNull Task task) { Log.v("createUser complete" , "status: " + task.isSuccessful()); if(task.isSuccessful()){ startActivity(SignUp.intent); } } }); } } return; } } 

就像qbix所说的那样,你可以使用任何你要使用的版本的API调用。 如果可能,您应该使用较新的API,因为它将来会得到更多支持。

请参阅此处的文档:

https://firebase.google.com/docs/database/android/start/

去掉:

 Firebase.setAndroidContext(this); FirebaseApp.initializeApp(this); 

并把:

 FirebaseDatabase database = FirebaseDatabase.getInstance(); 

如果qbix把他的评论写成答案,那么你应该接受他而不是我看到他如何在几分钟后击败我。

也:

如果您正在使用旧的火力架并需要帮助切换,本指南即会发布,并将帮助您进行切换。 这是一个相当简单的开关。

https://firebase.google.com/support/guides/firebase-android

我知道已经接受了答案。 但是,我遇到了同样的错误消息: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process (name). Make sure to call FirebaseApp.initializeApp(Context). java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process (name). Make sure to call FirebaseApp.initializeApp(Context). 我尝试了在SO上find的几个解决方案,并仔细检查所有内容,直到我最终发现Firebase控制台中定义的包名称与我的清单文件中定义的包名称不匹配。

尝试转到Firebase控制台 – >项目设置 – >检查包名是否匹配。

希望它可以帮助一些:)

使用Android Studio中包含的Firebase向导更容易:它在gradle文件中添加所有依赖项,在需要时创建firebase项目,将应用程序与项目连接等。

在Android Studio中打开菜单Tools / Firebase并按照说明操作。

然后FirebaseApp.initializeApp()将返回有效值。

首先检查应该是Firebase文档和来自的工具

Android Studio – >工具 – > Firebase – >云消息传递

即使你以前做过这件事。

看到这个 , 那个和那个 。

同样, 即使您之前已经这样做过,因为firebase版本往往需要最新的配置JSON。