ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] Make sure to call FirebaseApp.initializeApp(Context) first.
    Android 2019. 3. 20. 11:10

     

    특정 단말에서만 났던 에러.

    앱 재설치 후 첫 실행시에만. 앱이 죽는다.

    로그는 다음과 같았고,

     

    ...더보기

      --------- beginning of crash

    2019-03-20 10:21:47.709 4309-4309/com. E/AndroidRuntime: FATAL EXCEPTION: main

        Process: com., PID: 4309

        java.lang.RuntimeException: Unable to create application com.Application: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com. Make sure to call FirebaseApp.initializeApp(Context) first.

            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5879)

            at android.app.ActivityThread.-wrap3(ActivityThread.java)

            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)

            at android.os.Handler.dispatchMessage(Handler.java:102)

            at android.os.Looper.loop(Looper.java:154)

            at android.app.ActivityThread.main(ActivityThread.java:6682)

            at java.lang.reflect.Method.invoke(Native Method)

            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)

            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

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

            at com.google.firebase.FirebaseApp.getInstance(com.google.firebase:firebase-common@@16.0.2:240)

            at com.google.firebase.iid.FirebaseInstanceId.getInstance(Unknown Source)

            at com.google.firebase.iid.zzaw.<init>(Unknown Source)

            at com.google.firebase.iid.zzaw.<init>(Unknown Source)

            at com.google.firebase.iid.FirebaseInstanceId.<init>(Unknown Source)

            at com.google.firebase.iid.FirebaseInstanceId.<init>(Unknown Source)

            at com.google.firebase.iid.zzao.create(Unknown Source)

            at com.google.firebase.components.zzj.zza(com.google.firebase:firebase-common@@16.0.2:43)

            at com.google.firebase.components.zzk.get(com.google.firebase:firebase-common@@16.0.2)

            at com.google.firebase.components.zzj.get(com.google.firebase:firebase-common@@16.0.2:54)

            at com.google.firebase.components.zza.get(com.google.firebase:firebase-common@@16.0.2:26)

            at com.google.firebase.components.zzf.get(com.google.firebase:firebase-common@@16.0.2:34)

            at com.google.firebase.components.zzf.zza(com.google.firebase:firebase-common@@16.0.2:82)

            at com.google.firebase.FirebaseApp.zze(com.google.firebase:firebase-common@@16.0.2:761)

            at com.google.firebase.FirebaseApp.initializeApp(com.google.firebase:firebase-common@@16.0.2:359)

            at com.fcm.FcmApp.createApp(FcmApp.kt:36)

            at com.Application.onCreate(AppApplication.java:60)

            at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1032)

            at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5876)

            at android.app.ActivityThread.-wrap3(ActivityThread.java) 

            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699) 

            at android.os.Handler.dispatchMessage(Handler.java:102) 

            at android.os.Looper.loop(Looper.java:154) 

            at android.app.ActivityThread.main(ActivityThread.java:6682) 

            at java.lang.reflect.Method.invoke(Native Method) 

            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 

            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 

     

     

    여기서 Make sure to call FirebaseApp.initializeApp(Context) first. 에 주목해보면

    Application 단에서

    public class AppApplication extends Application {
    
        public void onCreate() {
        super.onCreate();         
        FirebaseApp.initializeApp(context, optionsBuilder.build(), APP_NAME); 
        }
    

     

     

     

    하지만 이미 나는 이 코드가 있었고 뭐가 문제인가 찾아보니, AndroidManifest.xml에 allowBackup 설정이 없었다.

    FCM도 SharedPreference에 정보를 저장해두는 부분이 있는 듯 하다. 안에 까보면 SharedPreference 를 사용하는 부분이 있다.

    아래처럼 추가해주면 더이상 저 에러는 볼 수 없음.

    <application
     android:name=".AppApplication"
     android:allowBackup="false"
     android:hardwareAccelerated="true"
     android:icon="@mipmap/ic_launcher"
     android:label="@string/app_name"
     android:largeHeap="true"
     android:networkSecurityConfig="@xml/network_security_config"
     android:roundIcon="@mipmap/ic_launcher_round"
     android:theme="@style/AppTheme"
     tools:replace="android:icon,android:theme,android:allowBackup">

     

    댓글

Copyright by Yenne. All rights reserved