名为[ DEFAULT ]的 FirebaseApp 不存在

在迁移到 Firebase 云消息之后。当打开我的应用程序,它崩溃,抛出一个错误说 java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.我已经把我的新的谷歌服务。Json 和更新我的 SDK。

这是我的主要活动

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());


}
}
68945 次浏览

Please do double check, you added

apply plugin: 'com.google.gms.google-services'

at the bottom of app's gradle file and then clean and rebuild the project

Android Studio

  1. apply plugin: 'com.google.gms.google-services' (build.gradle - Module layer)
  2. Menu~>Build~>CleanProject

Works for me ok.

build.gradle file:

buildscript {
repositories {
jcenter()
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.2'
classpath 'com.google.gms:google-services:3.0.0'
}
}


allprojects {
repositories {
jcenter()
mavenLocal()
}
}

\app\build.gradle file:

apply plugin: 'com.android.application'


android {
..
}


dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
..
compile 'com.google.firebase:firebase-core:9.0.2'
compile 'com.google.firebase:firebase-messaging:9.0.2'
}


apply plugin: 'com.google.gms.google-services'

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 of tools:node="replace" in my app's manifest file. So, try to remove this xml tag and FirebaseInitProvider will be injected and Firebase can be initialized properly.

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.

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 using com.google.firebase:firebase-crash dependancy to handle crashes, it creates a background service your.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,

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

I am assuming, the background service when initing with our Application class, somehow Firebase is not initialized. To fix this, I did

if (!FirebaseApp.getApps(this).isEmpty())
FirebaseDatabase.getInstance().setPersistenceEnabled(true);

In your dependency just add:

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
...
compile 'com.google.firebase:firebase-core:9.0.2'
compile 'com.google.firebase:firebase-messaging:9.0.2'
}

apply plugin: 'com.google.gms.google-services'

@jmodrako answer solved my problem... tools:node="replace" to tools:node="merge"

Explained... on AndroidManifest.xml

From

<application
...
tools:node="replace">

To

<application
...
tools:node="merge">

Merge problems with library themes? Build problems solved using tools:replace="android:theme"

Credits to https://stackoverflow.com/a/38060272/2765087

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.

Change the Build Action (GoogleServicesJson) to the File Name Google-Services.Json.

In my case I was not initializing Firebase on app startup, I had to do the following to resolve it

@Service
public class FirebaseSetup implements CommandLineRunner {
public void run(String... args) throws Exception {
initializeFirebase();
}
private void initializeFirebase() throws FileNotFoundException, IOException {
FileInputStream serviceAccount = new FileInputStream(ResourceUtils.getFile("classpath:ssf1-v1-firebase-adminsdk-zr72u-afcb5bc13b.json"));
FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccount)).build();
FirebaseApp.initializeApp(options);
}
}

Verify all configurations as below:

1-firebase project setting: google-services.json is correct? enter image description here

2- add firebase SDK enter image description here

3- clean - rebuild your project

hopefully, this helps!

Add the following line to app/build.gradle

apply plugin: 'com.google.gms.google-services'  // Google Services plugin

And the following line to project build.gradle

classpath 'com.google.gms:google-services:4.3.3'

Add classpath 'com.google.gms:google-services:3.0.0' to build.gradle

dependencies {
..
classpath 'com.google.gms:google-services:3.0.0'
}

Add this at the end of the app\build.gradle

apply plugin: 'com.google.gms.google-services'

This worked for me