After migrating to Firebase Cloud Messaging.When opening my app it crashes and throws an error saying java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.
I already put my new google-services.json and update my SDK.
Here's my MainActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Check Google play service
GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();
int resultCode = googleAPI.isGooglePlayServicesAvailable(this);
if (resultCode != ConnectionResult.SUCCESS) {
if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
GooglePlayServicesUtil.getErrorDialog(resultCode, this,
PLAY_SERVICES_RESOLUTION_REQUEST).show();
} else {
Log.e(LOG_TAG, "This device is not supported.");
finish();
}
}
Log.i(TAG, "InstanceID token: " + FirebaseInstanceId.getInstance().getToken());
}
}
build.gradle file:
\app\build.gradle file:
Register your application in Firebase and copy the google-services.json to your root project.
Apply
classpath 'com.google.gms:google-services:3.1.0
to you root build.gradle.Apply
apply plugin: 'com.google.gms.google-services
to your project gradle.Move your firebase initialization inside the onCreate of Application class. Also if you have enabled offline persistence, FirebaseDatabase.getInstance().setPersistenceEnabled(true) should come before any other initializations.
I've had similar problem, and for me it was a bug/problem with manifest merger. I've found out that
FirebaseInitProvider
has not been injected into final manifest file because oftools:node="replace"
in my app's manifest file. So, try to remove this xml tag andFirebaseInitProvider
will be injected and Firebase can be initialized properly.Not sure, if it is relevant here. But there is another scenario when this crash can happen.
If your app has a service (with different process) and you're creating your own
Application
class, the service and the foreground app will use the same Application class (not same instance) to initialize. Now when I am usingcom.google.firebase:firebase-crash
dependancy to handle crashes, it creates a background serviceyour.app.packagename:background_crash
. For some reason, this was inducing crashes on my app. Specifically, because in my Application class, I was making a call like,I am assuming, the background service when initing with our Application class, somehow Firebase is not initialized. To fix this, I did
Change the Build Action (GoogleServicesJson) to the File Name Google-Services.Json.