新的Firebase初始化崩溃

时间:2016-05-22 15:20:00

标签: android android-studio firebase

FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();

当我调用此应用程序崩溃时,错误日志显示FirebaseApp不存在。

Caused by: java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist. 
    at com.google.firebase.FirebaseApp.getInstance(Unknown Source)
    at com.google.firebase.FirebaseApp.getInstance(Unknown Source)
    at com.google.firebase.remoteconfig.FirebaseRemoteConfig.getInstance(Unknown Source)

所以我试图初始化FireBase我自己。所以,新代码看起来像

FirebaseApp.initializeApp(this, FirebaseOptions.fromResource(this));
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();

新问题恰恰相反。检查崩溃日志表明FirebaseApp已经存在

Caused by: java.lang.IllegalStateException: FirebaseApp name [DEFAULT] already exists!
     at com.google.android.gms.common.internal.zzaa.zza(Unknown Source)
     at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)
     at com.google.firebase.FirebaseApp.initializeApp(Unknown Source)

我的Firebase应用程序是否初始化/应该初始化它?因为在这两种情况下我的应用程序崩溃甚至崩溃报告都无法正常工作。这是崩溃报告错误

E/FirebaseCrashSenderServiceImpl: Error sending crash report
    ait: Server did not receive report: Origin Error message: Mobile Crash and Performance Reporting API has not been used in project project-546786591250077938 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/mobilecrashreporting.googleapis.com/overview?project=project-XXXXXXXXXX then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
    at com.google.firebase.crash.internal.service.FirebaseCrashSenderServiceImpl.a(:com.google.android.gms.DynamiteModulesC:299)
    at com.google.firebase.crash.internal.service.FirebaseCrashSenderServiceImpl.a(:com.google.android.gms.DynamiteModulesC:146)
    at com.google.firebase.crash.internal.service.FirebaseCrashSenderServiceImpl.onHandleIntent(:com.google.android.gms.DynamiteModulesC:108)
    at aid.onTransact(:com.google.android.gms.DynamiteModulesC:69)
    at android.os.Binder.transact(Binder.java:387)
    at com.google.firebase.crash.internal.zzf$zza$zza.zzI(Unknown Source)
    at com.google.firebase.crash.internal.service.FirebaseCrashSenderService.onHandleIntent(Unknown Source)

我的build.gradle

ext {
    firebaseVersion = "9.0.0"
}
dependencies {
    compile "com.google.firebase:firebase-core:${firebaseVersion}"
    compile "com.google.firebase:firebase-ads:${firebaseVersion}"
    compile "com.google.firebase:firebase-crash:${firebaseVersion}"
    compile "com.google.firebase:firebase-config:${firebaseVersion}"
}

1 个答案:

答案 0 :(得分:13)

您是否在FirebaseRemoteConfig子类中调用了Application?您可能遇到background_crash也实例化app子类的问题,因此在未设置FirebaseApp的进程上执行代码。如果查看完整堆栈跟踪,您应该能够看到它在顶部附近发生了什么过程。

FirebaseApp通常由ContentProvider配置,由Firebase SDK自动合并到您的清单中。初始化Firebase远程配置会导致它尝试从其本地缓存中读取,这涉及从FirebaseApp获取应用程序ID值。如果您想防范未初始化的错误,那么您可以将代码移至Activity,或者在调用{{1}中的FirebaseApp代码之前检查您是否有RemoteConfig实例子类:

Application

如果不是这样,请检查您在构建时是否从@Override public void onCreate() { super.onCreate(); if (!FirebaseApp.getApps(this).isEmpty()) { FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); } } 插件中收到任何错误。

相关问题