新的Firebase初始化崩溃

Ash*_*rma 0 android firebase android-studio

FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
Run Code Online (Sandbox Code Playgroud)

当我打电话给这个应用程序崩溃错误日志说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)
Run Code Online (Sandbox Code Playgroud)

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

FirebaseApp.initializeApp(this, FirebaseOptions.fromResource(this));
FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
Run Code Online (Sandbox Code Playgroud)

新问题恰恰相反.检查崩溃日志说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)
Run Code Online (Sandbox Code Playgroud)

我的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)
Run Code Online (Sandbox Code Playgroud)

我的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}"
}
Run Code Online (Sandbox Code Playgroud)

Ian*_*ber 13

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

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

@Override
public void onCreate() {
  super.onCreate();
  if (!FirebaseApp.getApps(this).isEmpty()) {
    FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();

  }
}
Run Code Online (Sandbox Code Playgroud)

如果不是这样,请检查您是否google-services在构建时从插件中收到任何错误.

  • 是的我从Application Subclass调用它.因为我在应用程序初始化时需要一些remoteConfig值.有没有其他方法可以做到这一点?如果即使在第一个活动中没有发生Firebase初始化,该怎么办? (2认同)