19

I have been getting this issue.. followed the upgrade guide for new firebase sdk...saved the google services json file in app directory.. still the same error as you but for the database...

Caused by: java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.
3
  • Did you create the firebase project with your package name and download the google-services.json ? Commented May 20, 2016 at 12:30
  • Yes I did.. infact my app without setting diskpersistence works correctly. If I try to enable dispersistence in my Application class as mentioned in the docs here... firebase.google.com/support/guides/… ... my code fails Commented May 20, 2016 at 13:25
  • Known issue: firebase.google.com/docs/crash/android#known-issues Commented May 31, 2016 at 4:08

3 Answers 3

32

Are you using Firebase Crash Reporting? You might be hitting this error because of that if its hitting a background process and not the main.

Crash Reporting creates a second process (background_crash) to send crashes. Unfortunately, all processes in an Android app share a common Application subclass, so your onCreate method is run in the background process as well. That tries to initialise database, which fails.

The fix is to make sure the Database call is only run when Firebase is properly configured (which will be in the main process). You can check like this:

@Override
public void onCreate() {
  super.onCreate();
  if (!FirebaseApp.getApps(this).isEmpty()) {
    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
  }
}
Sign up to request clarification or add additional context in comments.

3 Comments

I have tried using this solution, but the code inside braces is never executed. Cloud you give me a hint to make it work, please?
Great.. I got this issue..only after adding firebase crash reporting lib . Thanks @Ian Barber
I am not using FirebaseDatabase, only Firebase Crash Reporting. As I have a different process, the problem resembles with your description. I am calling FirebaseCrash.report statically every time I send a report back to the server. Whenever I declare service as a process, it crashes. How do I solve this ?
4

I solved this error by don't put anything of Firebase in Application. I put it in to MainActivity. Example: MainActivity.java

@Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    ...
}

-UPDATE

Other solution is create a DatabaseHelper class contain one FirebaseDatabase instance.

public class DatabaseHelper {
  private static boolean persistenceEnable = false;
  private static FirebaseDatabase mDatabase;


  public static boolean isPersistenceEnable(){
    return persistenceEnable;
  }
  public static FirebaseDatabase getInstance() {
    if (mDatabase == null) {
      mDatabase = FirebaseDatabase.getInstance();
      if(persistenceEnable==true) {
        mDatabase.setPersistenceEnabled(true);
      }
    }

    return mDatabase;
  }
}

and using by: FirebaseDatabase database = DatabaseHelper.getInstance();

1 Comment

FirebaseDatabase is showing me error, Can U please help me @lee
0

Extending @Ian Barber's solution, you can try this generic check to skip processing your custom Application.onCreate for all non-main processes. If the additional processes don't belong to you, then you don't want any of your custom to run.

@Override
public void onCreate() {
    super.onCreate();
    if (FirebaseApp.getApps(this).isEmpty()) {
        // No firebase apps; we are in a non-main process
        // skip custom Application.onCreate
        return;
    }
    // Firebase init only in the main process
    FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    // other code
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.