FirebaseApp con el nombre [DEFAULT] no existe


81

Después de migrar a Firebase Cloud Messaging, al abrir mi aplicación, se bloquea y arroja un error que dice java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.que ya puse mi nuevo google-services.json y actualizo mi SDK.

Aquí está mi actividad principal

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

}
}

Respuestas:


109

Por favor revise dos veces, agregó

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

en la parte inferior del archivo gradle de la aplicación y luego limpie y reconstruya el proyecto


Quité el apply plugin: 'com.google.gms.google-services' de mi aplicación Gradle pero encuentro con un nuevo error al llamar FirebaseInstanceId.getInstance().getToken()en mi MainActivitymis aplicación se bloquea.
natsumiyu

1
mi mal ... necesitaba agregar el apply plugin: 'com.google.gms.google-services' ? Al intentar agregarlo, todavía encuentro un error. diceDidn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
natsumiyu

Hola Mori, puedes ignorar este error a partir de ahora y solucionarán este problema en la próxima versión. eso es lo que dice el equipo de Firebase :).
Venkatesan

Cuando agrego esto, aparece: "Error: Error de ejecución para la tarea ': app: mergeModernDebugResources'.> [String / google_api_key] /<path>/app/src/main/res/values/defaults.xml [string / google_api_key] / <ruta> /app/build/generated/res/google-services/modern/debug/values/values.xml: Error: recursos duplicados "Tampoco vi este paso en las guías de configuración o migración de FCM. ¿Tiene un enlace que me haya perdido?
C Nick

1
Flutter también puede requerir lo flutter clean & flutter runque se sugiere en la respuesta.
Nae

21

No estoy seguro, si es relevante aquí. Pero hay otro escenario en el que puede ocurrir este accidente.


Si su aplicación tiene un servicio (con un proceso diferente) y está creando su propia Applicationclase, el servicio y la aplicación de primer plano usarán la misma clase de aplicación ( no la misma instancia ) para inicializar. Ahora, cuando uso la com.google.firebase:firebase-crashdependencia para manejar los bloqueos, crea un servicio en segundo plano your.app.packagename:background_crash. Por alguna razón, esto estaba provocando bloqueos en mi aplicación. Específicamente, porque en mi clase de aplicación, estaba haciendo una llamada como,

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

Supongo que el servicio en segundo plano cuando se inicia con nuestra clase de aplicación, de alguna manera, Firebase no está inicializado. Para arreglar esto, lo hice

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

Esto también sucede con los anuncios. Si un usuario hace clic en un anuncio, vuelve a la aplicación Firebase y ya no está disponible.
theJosh

@Codevalley, en mi caso, hubo otro proceso (Adobe Creative SDK Image Editor) llamado app: editor. Estaba usando la misma clase de aplicación, por lo que intentaba obtener un token de una aplicación de base de fuego no existente. Verificar antes de obtener el token resolvió mi problema. Muchas gracias! :)
rzaaeeff

12

Tuve un problema similar, y para mí fue un error / problema con la fusión de manifiesto. Descubrí que FirebaseInitProviderno se ha inyectado en el archivo de manifiesto final debido al archivo de manifiesto de tools:node="replace"mi aplicación. Por lo tanto, intente eliminar esta etiqueta xml y FirebaseInitProviderse inyectará y Firebase se puede inicializar correctamente.


¿Pueden actualizar su respuesta para aquellos que no están mucho más familiarizados con la herramienta de fusión? @jmodrako
Killer

Actualmente he actualizado a tools: replace = "android: name" en lugar de tools: node = "replace". espero que ayude
Asesino

11

archivo build.gradle:

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 archivo:

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'

Error: (90, 0) No se encontró el complemento con el ID 'com.google.gms.google-services'.
Gilberto Ibarra

10

@jmodrako respuesta resolvió mi problema ... tools:node="replace"atools:node="merge"

Explicado ... en AndroidManifest.xml

Desde

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

A

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

¿Fusionar problemas con temas de biblioteca? Construya problemas resueltos usandotools:replace="android:theme"

Créditos a https://stackoverflow.com/a/38060272/2765087


2

Mueva la inicialización de su base de fuego dentro de la clase onCreate of Application. Además, si ha habilitado la persistencia sin conexión, FirebaseDatabase.getInstance (). SetPersistenceEnabled (true) debe aparecer antes que cualquier otra inicialización.


hice clic en votar hacia abajo accidentalmente ahora, por lo que no me permite votar a favor :(
Developine

2

Verifique todas las configuraciones como se muestra a continuación:

Configuración del proyecto 1-firebase: ¿google-services.json es correcto? ingrese la descripción de la imagen aquí

2- agrega el SDK de firebase ingrese la descripción de la imagen aquí

3- limpia - reconstruye tu proyecto

¡Con suerte, esto ayuda!


2

Agregue la siguiente línea a app / build.gradle

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

Y la siguiente línea para proyectar build.gradle

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

0

Estudio de Android

  1. aplicar complemento: 'com.google.gms.google-services' (build.gradle - Capa de módulo)
  2. Menú ~> Construir ~> CleanProject

Funciona para mí, ok.


0

Registre su aplicación en Firebase y copie google-services.json en su proyecto raíz.

Aplicar classpath 'com.google.gms:google-services:3.1.0a su root build.gradle.

Aplica apply plugin: 'com.google.gms.google-servicesa tu proyecto gradle.


0

En su dependencia simplemente agregue:

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'
}

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


0

Cambie la Acción de compilación (GoogleServicesJson) por el Nombre de archivo Google-Services.Json.


0

En mi caso, no estaba inicializando Firebase al iniciar la aplicación, tuve que hacer lo siguiente para resolverlo

@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);
    }
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.