1

Firebase Crash Reporting 및 Firebase Remote Config를 사용하고 있습니다. 두 버전 모두 9.8.0입니다."기본 FirebaseApp가이 프로세스에서 초기화되지 않았기 때문에"일부 장치에서 응용 프로그램이 충돌합니다.

대부분의 장치 설정에서 완벽하게 작동합니다 (나는 Set up crash reporting을 따랐습니다). 그러나 장치의 작은 비율 (실제로 발생률이 가장 높은 경우 충돌이 있음)에서는 Application onCreate 메소드에서 Remote Config를 초기화하려고 할 때 충돌이 발생합니다. 버전 10.0.0에

java.lang.RuntimeException: Unable to create application com.company.application.AppApplication: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.company.application. Make sure to call FirebaseApp.initializeApp(Context) first. 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6429) 
    at android.app.ActivityThread.access$1800(ActivityThread.java:229) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1887) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:7329) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.company.application. Make sure to call FirebaseApp.initializeApp(Context) first. 
    at com.google.firebase.a.d(Unknown Source) 
    at com.google.firebase.b.a.a(Unknown Source) 
    at com.company.application.d.a.a(SourceFile:21) 
    at com.company.application.AppApplication.onCreate(SourceFile:76) 
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1037) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6426) 
    ... 8 more 
+1

질문을 편집하고 응용 프로그램 클래스의 oncreate 메서드를 추가 할 수 있습니까? (FirebaseApp.initializeApp (Context)를 먼저 호출했는지 궁금합니다.) – petey

+0

@petey 그렇게하지 않아도됩니다. https://firebase.googleblog.com/2016/12/how를 참조하십시오. 게다가, 나는 그것이 문제였다. 그런 다음 그것은 장치의 작은 비율뿐만 아니라 모든 시간에 충돌 할 것이다. –

답변

4

이전, 중포 기지 충돌은 background_crash라는 이름의 앱에서 추가 과정을 만들었습니다. AppApplication 클래스의 인스턴스는 background_crash을 포함하여 앱의 각 프로세스에 대해 생성되고 실행됩니다.

애플리케이션 클래스에서 Firebase 서비스의 초기화를 수행하려면 background_crash에서 초기화가 수행되지 않도록 가드를 추가해야합니다. 그 방법은 다음과 같습니다 :

if (!FirebaseApp.getApps(this).isEmpty()) { 
     // Not in crash process. Do your Remote Config init here. 
    } 

또 다른 해결책은 최신 버전의 Firebase 10.0.1로 업그레이드하는 것입니다.

이 답변이 유효한 것으로 가정하면 기기에 설치된 Google Play 서비스의 버전이 요인이며 오류가있는 기기에 이전 버전이없는 경우 일부 기기에서만 오류가 발생하는 이유를 설명 할 수 없습니다.

+1

"Google Play 서비스 버전이 아닌 이상 ...": 가능하지 않습니다. Remote Config에 접근하기 전에'initializeApp()'가 끝나지 않아 경쟁 조건이 존재할 가능성이 높습니다. – Kato

+0

안녕하세요. 여전히이 문제는 내 안드로이드 스튜디오에서만 발생하는 문제입니다. 다른 시스템 코드에서 충돌없이 실행 중입니다. – NehaK

+0

MyApplication.onCreate()에서 비슷한 문제가 발생합니다. 일부 라이브러리에서 추가 프로세스가 생성되었는지 어떻게 확인할 수 있습니까? –