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());
}
}
apply plugin: 'com.google.gms.google-services'
de mi aplicación Gradle pero encuentro con un nuevo error al llamarFirebaseInstanceId.getInstance().getToken()
en miMainActivity
mis aplicación se bloquea.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"
flutter clean & flutter run
que se sugiere en la respuesta.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
Application
clase, 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 lacom.google.firebase:firebase-crash
dependencia para manejar los bloqueos, crea un servicio en segundo planoyour.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);
fuente
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 al archivo de manifiesto detools:node="replace"
mi aplicación. Por lo tanto, intente eliminar esta etiqueta xml yFirebaseInitProvider
se inyectará y Firebase se puede inicializar correctamente.fuente
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'
fuente
@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 usando
tools:replace="android:theme"
Créditos a https://stackoverflow.com/a/38060272/2765087
fuente
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.
fuente
Verifique todas las configuraciones como se muestra a continuación:
Configuración del proyecto 1-firebase: ¿google-services.json es correcto?
2- agrega el SDK de firebase
3- limpia - reconstruye tu proyecto
¡Con suerte, esto ayuda!
fuente
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'
fuente
Estudio de Android
Funciona para mí, ok.
fuente
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.0
a su root build.gradle.Aplica
apply plugin: 'com.google.gms.google-services
a tu proyecto gradle.fuente
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'
fuente
Cambie la Acción de compilación (GoogleServicesJson) por el Nombre de archivo Google-Services.Json.
fuente
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); } }
fuente