如何解决Android Firebase错误“默认FirebaseApp未在此过程中初始化”?

问题描述 投票:5回答:11

我使用FirebaseAuth进行用户注册电子邮件和密码,我已经在我的项目中添加了插件和依赖项。

main activity.Java

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
EditText ed_email, ed_pass;
Button but_login;
ProgressDialog progressDialog;
FirebaseAuth firebaseAuth;
Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    context=getApplicationContext();
    FirebaseApp.initializeApp(context);
    firebaseAuth=FirebaseAuth.getInstance();

    ed_email= (EditText) findViewById(R.id.ed_email);
    ed_pass= (EditText) findViewById(R.id.ed_pass);
    but_login= (Button) findViewById(R.id.but_login);
    but_login.setOnClickListener(this);
    progressDialog=new ProgressDialog(this);
}
public void registerUser(){
    String email=ed_email.getText().toString().trim();
    String pass=ed_pass.getText().toString().trim();
    if(TextUtils.isEmpty(email)){
        Toast.makeText(getApplicationContext(),"Invalid Input",Toast.LENGTH_SHORT).show();
        return;
    }
    if(TextUtils.isEmpty(pass)){
        Toast.makeText(getApplicationContext(),"Invalid Input",Toast.LENGTH_SHORT).show();
        return;
    }
    progressDialog.setMessage("You are registering...");
    progressDialog.show();
    firebaseAuth.createUserWithEmailAndPassword(email,pass).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
                Toast.makeText(getApplicationContext(), "Success", Toast.LENGTH_SHORT).show();
                progressDialog.hide();
            } else {
                Toast.makeText(getApplicationContext(), "Sorry...!!!", Toast.LENGTH_SHORT).show();
                progressDialog.hide();
            }
        }

    });


}

@Override
public void onClick(View v) {
    registerUser();
}

}

logcat -

com.skapsdevelopment.firebase E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.skapsdevelopment.firebase, PID: 31993
Theme: themes:{default=overlay:com.resurrectionremix.pitchblack, iconPack:com.baranovgroup.nstyle, fontPkg:com.resurrectionremix.pitchblack, com.android.systemui=overlay:com.resurrectionremix.pitchblack, com.android.systemui.navbar=overlay:com.resurrectionremix.pitchblack}
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.skapsdevelopment.firebase/com.skapsdevelopment.firebase.MainActivity}: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.skapsdevelopment.firebase. Make sure to call FirebaseApp.initializeApp(Context) first.
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
   at android.app.ActivityThread.-wrap11(ActivityThread.java)
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:148)
   at android.app.ActivityThread.main(ActivityThread.java:5461)
   at java.lang.reflect.Method.invoke(Native Method)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.skapsdevelopment.firebase. Make sure to call FirebaseApp.initializeApp(Context) first.
   at com.google.firebase.FirebaseApp.getInstance(Unknown Source)
   at com.google.firebase.auth.FirebaseAuth.getInstance(Unknown Source)
   at com.skapsdevelopment.firebase.MainActivity.onCreate(MainActivity.java:35)
   at android.app.Activity.performCreate(Activity.java:6251)
   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510) 
   at android.app.ActivityThread.-wrap11(ActivityThread.java) 
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363) 
   at android.os.Handler.dispatchMessage(Handler.java:102) 
   at android.os.Looper.loop(Looper.java:148) 
   at android.app.ActivityThread.main(ActivityThread.java:5461) 
   at java.lang.reflect.Method.invoke(Native Method) 
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

我的应用程序未启动并显示以下错误:

java.lang.IllegalStateException: Default FirebaseApp is not initialized in this 
process com.skapsdevelopment.firebase. 
Make sure to call FirebaseApp.initializeApp(Context) first.

为什么应用程序无法正常启动?

java android firebase firebase-realtime-database firebase-authentication
11个回答
14
投票

仔细检查以下内容,因为这对我有用:

在项目级gradle文件中添加:

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

在您的app-build gradle文件中:

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
  compile 'com.google.firebase:firebase-core:10.0.1'

  // Getting a "Could not find" error? Make sure you have
  // the latest Google Repository in the Android SDK manager
}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services' 

Link


0
投票

在项目的build.gradle中将谷歌服务插件从版本4.1.0降级到版本4.0.1

classpath 'com.google.gms:google-services:4.0.1'

0
投票

派对迟到了,但我想分享我的解决方案。希望它能帮助别人

几个小时前我遇到了一个非常类似的问题。在这里尝试了一切,但没有任何效果。我所有的依赖都是正确的,没有任何意义。

我不知道的是,此应用程序需要在Firebase中注册。我跟着这一步一步guide和voilà!有用!不要使用推荐的类路径依赖项,请务必使用这个com.google.gms:google-services:4.2.0


3
投票

Docs中声明应该从Application调用FirebaseApp.initializeApp()。

您是否尝试创建和应用程序实例(如果您还没有),并从其onCreate()方法调用FirebaseApp.initializeApp(this)


3
投票

请在classpath“com.google.gms:google-services:4.1.0”的位置添加此类路径“com.google.gms:google-services:4.0.1”


2
投票

首先确保您在Firebase控制台中注册了应用程序,并在应用程序中添加了google-services.json文件。

秒检查是否已添加所有依赖项。在App-bulid Gradle文件中添加以下依赖项: -

buildscript {

repositories {
    google()
    jcenter()
}
dependencies {
    classpath 'com.google.gms:google-services:4.0.0'
    }

并添加项目级构建gradle文件: -

dependencies
 {
     implementation 'com.google.firebase:firebase-core:16.0.1'
     implementation 'com.google.firebase:firebase-auth:16.0.2'
 } 
 apply plugin: 'com.google.gms.google-services'    

1
投票

我也遇到了上述问题。我下载了所有插件并使用NuGet检查了更新。最后,我发现崩溃是由于应用程序包名称与Google Dev中指定的名称不匹配。

  • 确保为您的google-services.json分配了GoogleServicesJson的构建操作
  • 检查您的应用程序包名称是否与您在Google Dev Console中指定的名称相匹配

0
投票

您需要在程序中添加initializeApp。我可以告诉你它是如何完成的。

首先创建一个新类并扩展Application

public class SimpleBlog extends Application {

@Override
public void onCreate() {
    super.onCreate();
    if(!FirebaseApp.getApps(this).isEmpty()) {
        FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    }
}

最后,转到Manifest并在应用程序中添加如下:

<application
    android:name=".SimpleBlog"  <------
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

这都是......


0
投票

在我的案例中,Proguard引起了问题,所以这就是我所做的: - 如果AndroidManifest.xml中有任何类与"YourClass"".YourClass",请将其更改为其完整包名:"com.yourpackage.yourClass"


0
投票

感谢这里的答案,当我遇到此错误时,我查看了可能出现问题的清单。

最后,我意识到..我在Android Studio中启动了一个新模块,其名称与Firebase控制台上已经为我设置的Firebase实例注册的名称不同。简单的错误 - 我忘了将新的包名添加到Console配置中。

在我做对了之后,它开始起作用了。记住Firebase控制台预期的所有小细节有时候会很棘手..必须警惕/“配置认知”那里肯定


0
投票

跟着这些步骤:

  1. 删除FirebaseApp.initializeApp(context);,因为在较新版本的Firebase中不需要它
  2. 将包名称的应用添加到Firebase项目中。使用您的软件包名称下载Google JSON文件,并将下载的文件添加到您的应用程序中
  3. 将指示的库添加到应用程序级别和项目级别gradle中
  4. 同步项目,您就可以使用Firebase了

有关详细信息,请参阅Firebase Authentication Guide

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