java - guardar - FirebaseApp con nombre[DEFAULT] no existe
guardar datos en firebase android (12)
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.
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());
}
}
Android Studio
- aplique el complemento: ''com.google.gms.google-services'' (build.gradle - Módulo de capa)
- Menú ~> Construir ~> Proyecto limpio
A mi me funciona bien.
Cambie la Acción de compilación (GoogleServicesJson) al Nombre de archivo Google-Services.Json.
En mi caso, no estaba inicializando Firebase en el inicio de 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);
}
}
En su dependencia solo 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''
}
aplique el
plugin: ''com.google.gms.google-services''
La respuesta de @jmodrako resolvió mi problema ...
tools:node="replace"
a
tools:node="merge"
Explicado ... en AndroidManifest.xml
Desde
<application
...
tools:node="replace">
A
<application
...
tools:node="merge">
¿Combinar problemas con los temas de la biblioteca?
Problemas de compilación resueltos usando
tools:replace="android:theme"
Créditos a https://.com/a/38060272/2765087
Mueva su inicialización de Firebase dentro de la clase onCreate of Application. Además, si ha habilitado la persistencia sin conexión, FirebaseDatabase.getInstance (). SetPersistenceEnabled (true) debería aparecer antes que cualquier otra inicialización.
No estoy seguro, si es relevante aquí. Pero hay otro escenario en el que puede ocurrir este bloqueo.
Si su aplicación tiene un servicio (con un proceso diferente) y está creando su propia clase de
Application
, el servicio y la aplicación en primer plano utilizarán la misma clase de Aplicación (
no la misma instancia
) para inicializar.
Ahora, cuando estoy usando
com.google.firebase:firebase-crash
para manejar 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 al iniciar con nuestra clase de aplicación, de alguna manera Firebase no se inicializa. Para arreglar esto, hice
if (!FirebaseApp.getApps(this).isEmpty())
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
Por favor, verifique dos veces, agregó
apply plugin: ''com.google.gms.google-services''
en la parte inferior del archivo gradle de la aplicación y luego limpiar y reconstruir el proyecto
Registre su aplicación en Firebase y copie google-services.json en su proyecto raíz.
Aplique
classpath ''com.google.gms:google-services:3.1.0
a su raíz build.gradle.
Aplicar
apply plugin: ''com.google.gms.google-services
a su proyecto gradle.
Tuve un problema similar, y para mí fue un error / problema con la fusión de manifiesto.
Descubrí que
FirebaseInitProvider
no se ha inyectado en el archivo de manifiesto final debido a las
tools:node="replace"
en el archivo de manifiesto de mi aplicación.
Por lo tanto, intente eliminar esta etiqueta xml y
FirebaseInitProvider
se inyectará y Firebase se puede inicializar correctamente.
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()
}
}
Archivo / app / build.gradle:
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''