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

}
}
natsumiyu
fuente

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

Venkatesan
fuente
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);
Codevalley
fuente
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.

jmodrako
fuente
¿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'
elron smith
fuente
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

Carlos Eduardo Liedtke Borges
fuente
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.

Ramya Ramesh
fuente
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!

Señor especial
fuente
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'
usuario1188867
fuente
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.

Maxim Firsoff
fuente
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.

pRaNaY
fuente
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'

pavel
fuente
0

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

Abdul basha
fuente
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);
    }
}
Anand Rockzz
fuente