名称为[DEFAULT]的FirebaseApp不存在

时间:2016-05-20 09:00:59

标签: java android firebase

迁移到Firebase Cloud Messaging后。当打开我的应用时,它会崩溃并抛出错误java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.我已经放了我的新google-services.json并更新了我的SDK。

这是我的MainActivity

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

//Check Google play service
    GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();
    int resultCode = googleAPI.isGooglePlayServicesAvailable(this);

    if (resultCode != ConnectionResult.SUCCESS) {
        if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
            GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                    PLAY_SERVICES_RESOLUTION_REQUEST).show();
        } else {
            Log.e(LOG_TAG, "This device is not supported.");
            finish();
        }
    }

    Log.i(TAG, "InstanceID token: " + FirebaseInstanceId.getInstance().getToken());

}
}

14 个答案:

答案 0 :(得分:66)

请仔细检查,您已添加

apply plugin: 'com.google.gms.google-services' 

在应用程序的gradle文件的底部,然后清理并重建项目

答案 1 :(得分:21)

不确定,如果它在这里是相关的。但是还有另一种情况可能发生这种崩溃。

如果您的应用有服务(使用不同的流程)并且您正在创建自己的Application类,则该服务和前台应用将使用相同的应用类(不是同一个实例< / strong>)初始化。现在,当我使用com.google.firebase:firebase-crash依赖来处理崩溃时,它会创建后台服务your.app.packagename:background_crash。由于某种原因,这导致我的应用程序崩溃。具体来说,因为在我的Application类中,我正在进行调用,如

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

我假设,使用我们的Application类启动时的后台服务,不知何故Firebase未初始化。为了解决这个问题,我做了

if (!FirebaseApp.getApps(this).isEmpty())
        FirebaseDatabase.getInstance().setPersistenceEnabled(true);

答案 2 :(得分:12)

我有类似的问题,对我来说这是一个明显合并的错误/问题。我发现由于我的应用程序清单文件中的FirebaseInitProvidertools:node="replace"尚未注入最终清单文件。因此,请尝试删除此xml标记,并注入FirebaseInitProvider并正确初始化Firebase。

答案 3 :(得分:10)

build.gradle文件:

buildscript {
    repositories {
        jcenter()
        mavenLocal()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
}

\ app \ build.gradle文件:

apply plugin: 'com.android.application'

android {
    ..
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    ..
    compile 'com.google.firebase:firebase-core:9.0.2'
    compile 'com.google.firebase:firebase-messaging:9.0.2'
}

apply plugin: 'com.google.gms.google-services'

答案 4 :(得分:10)

@jmodrako答案解决了我的问题... tools:node="replace"tools:node="merge"

在AndroidManifest.xml上解释...

发件人

<application
...
tools:node="replace">

<application
...
tools:node="merge">

合并图书馆主题的问题? 使用tools:replace="android:theme"

解决问题

https://stackoverflow.com/a/38060272/2765087

的信用

答案 5 :(得分:2)

将firebase初始化移动到onCreate of Application类中。 此外,如果您启用了离线持久性,FirebaseDatabase.getInstance()。setPersistenceEnabled(true)应该在任何其他初始化之前。

答案 6 :(得分:2)

将以下行添加到app / build.gradle

apply plugin: 'com.google.gms.google-services'  // Google Services plugin

以及以下行到project build.gradle

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

答案 7 :(得分:0)

Android Studio

  1. apply plugin:'com.google.gms.google-services'(build.gradle - Module layer)
  2. 菜单〜&GT;生成〜&GT; CleanProject
  3. 对我有用。

答案 8 :(得分:0)

在您的依赖项中,只需添加:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
...
compile 'com.google.firebase:firebase-core:9.0.2'
compile 'com.google.firebase:firebase-messaging:9.0.2'
}

申请plugin: 'com.google.gms.google-services'

答案 9 :(得分:0)

在Firebase中注册您的应用程序,并将google-services.json复制到您的根项目。

classpath 'com.google.gms:google-services:3.1.0应用于root build.gradle。

apply plugin: 'com.google.gms.google-services应用于您的项目计划。

答案 10 :(得分:0)

将构建操作(GoogleServicesJson)更改为文件名Google-Services.Json。

答案 11 :(得分:0)

对于我来说,我不是在应用启动时初始化Firebase的,所以我必须执行以下操作来解决它

@Service
public class FirebaseSetup implements CommandLineRunner {
    public void run(String... args) throws Exception {
        initializeFirebase();
    }
    private void initializeFirebase() throws FileNotFoundException, IOException {
        FileInputStream serviceAccount = new FileInputStream(ResourceUtils.getFile("classpath:ssf1-v1-firebase-adminsdk-zr72u-afcb5bc13b.json"));
        FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccount)).build();
        FirebaseApp.initializeApp(options);
    }
}

答案 12 :(得分:0)

验证所有配置,如下所示:

1-firebase项目设置: google-services.json是正确的吗? enter image description here

2-添加Firebase SDK enter image description here

3-清理-重建项目

希望这会有所帮助!

答案 13 :(得分:0)

classpath 'com.google.gms:google-services:3.0.0' 添加到 build.gradle

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

在 app\build.gradle 末尾添加这个

apply plugin: 'com.google.gms.google-services'

这对我有用