android - remote - FirebaseApp predeterminada no se inicializa
remote config examples (26)
Asegúrese de agregar a su nivel de raíz build.gradle
buildscript {
// ...
dependencies {
// ...
classpath ''com.google.gms:google-services:3.0.0''
}
}
Luego, en el archivo Gradle de nivel de módulo (generalmente la aplicación / build.gradle), agregue la línea ''aplicar complemento'' en la parte inferior del archivo para habilitar el complemento Gradle:
apply plugin: ''com.android.application''
android {
// ...
}
dependencies {
// ...
compile ''com.google.firebase:firebase-core:9.6.1''
// Getting a "Could not find" error? Make sure you have
// the latest Google Repository in the Android SDK manager
}
// ADD THIS AT THE BOTTOM
apply plugin: ''com.google.gms.google-services''
Como se dijo en la documentation . Tuve la excepción como en una pregunta anterior cuando olvidé agregar esto en mis archivos gradle.
Estamos viendo algunas excepciones con el mensaje
Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.
Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.
en nuestra aplicación de Android en la que acabamos de agregar Firebase Remote Config.
El seguimiento de la pila es el siguiente:
Fatal Exception: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.
at com.google.firebase.FirebaseApp.getInstance(Unknown Source)
at com.google.firebase.remoteconfig.FirebaseRemoteConfig.getInstance(Unknown Source)
at com.example.app.fragments.SomeFragment.updateFooter(SourceFile:295)
at com.example.app.fragments.SomeFragment.onCreateView(SourceFile:205)
at android.support.v4.app.Fragment.performCreateView(SourceFile:2080)
at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1108)
at android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1290)
at android.support.v4.app.BackStackRecord.run(SourceFile:801)
at android.support.v4.app.FragmentManagerImpl.execSingleAction(SourceFile:1638)
at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(SourceFile:679)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(SourceFile:143)
at android.support.v4.view.ViewPager.populate(SourceFile:1240)
at android.support.v4.view.ViewPager.populate(SourceFile:1088)
at android.support.v4.view.ViewPager.setAdapter(SourceFile:542)
at com.example.app.SomeActivity.onSomeAsyncCallback(SourceFile:908)
at com.example.app.SomeDataRetriever.onAsyncHttpCompleted(SourceFile:72)
at com.example.app.io.AsyncHttp.onPostExecute(SourceFile:141)
at com.example.app.io.AsyncHttp.onPostExecute(SourceFile:19)
at android.os.AsyncTask.finish(AsyncTask.java:679)
at android.os.AsyncTask.access$500(AsyncTask.java:180)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:696)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:150)
at android.app.ActivityThread.main(ActivityThread.java:5665)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:689)
Esta es la versión 9.6.1 y también estamos usando otros componentes de Firebase:
compile ''com.google.firebase:firebase-ads:9.6.1''
compile ''com.google.firebase:firebase-config:9.6.1''
compile ''com.google.firebase:firebase-invites:9.6.1''
compile "com.google.firebase:firebase-messaging:9.6.1"
Como puedo ver en la documentación y el Javadoc, no deberíamos tener que hacer ninguna inicialización manual en nuestro caso.
La excepción ocurre en Android 4-6 en una variedad de dispositivos.
Editar:
Veo que esta pregunta recibe un poco de atención. Creo que esta explicación puede ser interesante para algunos de ustedes: https://firebase.googleblog.com/2016/12/how-does-firebase-initialize-on-android.html
Aunque inicialice manualmente Firebase con
FirebaseApp.initializeApp(this);
hace que el error desaparezca, no soluciona la causa raíz, algunos problemas extraños que se unen no parecen resolverse, como
-
FCM requiere el permiso
com.google.android.c2dm.permission.RECEIVE
que es solo para GCM - el token deja de estar registrado después de la primera notificación enviada
- mensaje no recibido / onMessageReceived () nunca se llama,
Utilice el complemento más reciente de Gradle (por ejemplo, el complemento de Android 2.2.3 y Gradle 2.14.1) solucionó todo. (Por supuesto, la configuración debe ser correcta según la documentation )
Como mencionó @PSIXO en un comentario, este podría ser el problema con la versión de dependencia de google-services. Para mí cambiando
buildscript {
// ...
dependencies {
// ...
classpath ''com.google.gms:google-services:4.1.0''
}
}
a
buildscript {
// ...
dependencies {
// ...
classpath ''com.google.gms:google-services:4.0.1''
}
}
funcionó. Puede haber algún problema con la versión 4.1.0. Como perdí muchas horas en esto, pensé en escribir esto como respuesta.
Debe agregar la dependencia de buildscript de Firebase Gradle en build.gradle (nivel de proyecto)
classpath ''com.google.gms:google-services:3.1.0''
y agregue el complemento Firebase para Gradle en app / build.gradle
apply plugin: ''com.google.gms.google-services''
build.gradle will include these new dependencies:
compile ''com.google.firebase:firebase-database:11.0.4''
Fuente: Asistente de Android Studio
Después de actualizar varias dependencias, recibí un error de Crashlytics en la compilación, ''Crashlytics encontró una clave API no válida: nulo. ¡Comprueba el complemento Crashlytics para asegurarte de que la aplicación se haya agregado correctamente! Póngase en contacto con [email protected] para obtener ayuda. La única respuesta no automática que recibí de los intentos repetidos de [email protected] al que te dirige el error fue que Fabric y Crashlytics son equipos separados, por lo que no pudieron ayudarme. He evitado implementar la capa de Fabric adicional en Crashlytics, y no pude obtener una nueva clave del sitio de Fabric, ni siquiera conseguir que el sitio me reconociera. Al intentar solucionar esto simplemente eliminando Crashlytics de mi código, obtuve el ''FirebaseApp predeterminado no se inicializa en este proceso com.example.app. Asegúrese de llamar a FirebaseApp.initializeApp (Context) primero ''crash en la ejecución.
Nunca he tenido que agregar la línea de inicialización de ''FirebaseApp.initializeApp (this)'', y de hecho lo había comentado. La documentación incluso menciona que no necesita esto si solo usa Firebase para una actividad. Agregarlo no hizo ninguna diferencia, todavía obtuvo el error de ejecución de la ejecución.
Resulta que lo que estaba causando los nuevos errores oscuros era la dependencia actualizada de los servicios de google. Por ahora no tengo tiempo para pasar más días tratando de corregir los errores de escopeta que está causando la nueva dependencia, así que hasta que alguien encuentre soluciones, me quedaré con la versión anterior. Además del extraño bloqueo de inicialización, la nueva versión puede estar forzando a los usuarios de Fabric en Crashlytics. Los usuarios también se ven obligados a volver a la versión de dependencia anterior: Crashlytics encontró una clave API no válida: nulo. después de actualizar com.google.gms: google-services: 4.1.0
com.google.gms:google-services:4.1.0//BAD
com.google.gms:google-services:4.0.1//GOOD
EDITAR 17/10/18: después de actualizar las siguientes dependencias nuevamente
implementation ''com.google.firebase:firebase-ads:17.0.0''
implementation ''com.google.firebase:firebase-auth:16.0.4''
implementation ''com.google.firebase:firebase-database:16.0.3''
implementation ''com.google.firebase:firebase-core:16.0.4
Tuve un bloqueo inmediato en el intento de instalación con ''xxx se cerró inesperadamente'', como cuando intenté la actualización de dependencia de google-services. Excavando en el registro, encontré un enlace que me indicaba que agregue esto al manifiesto
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxx~xxxxxx"/>
Esto es nuevo y no se menciona en las instrucciones de configuración e intersticiales aquí documentation y aquí https://developers.google.com/admob/android/interstitial .
Solía tener que lidiar solo con un ID relacionado con el anuncio para mi aplicación, el INTERSTITIAL_UNIT_ID. Ahora dos deben ser tratados. Además de la adición anterior, la documentación indica agregar ADMOB_APP_ID aquí (el mismo número que vincula con ads.APPLICATION_ID en el nuevo código de manifiesto)
MobileAds.initialize(this, ADMOB_APP_ID);
Los identificadores INTERSTITIAL_UNIT_ID y ADMOB_APP_ID se pueden desenterrar en su consola Google AdMob. Mi aplicación de juego dejó de publicar anuncios en mi primera actualización de las dependencias de Firebase y aún no publica anuncios, dando el código de error 0 en
public void onAdFailedToLoad(int errorCode){...
Incluso después de todo este desorden agregado, todavía no puedo actualizar la dependencia de los servicios de Google sin el error de inicialización de la ejecución de bloqueo. Espero estar atascado en google-services: 4.0.1 por algún tiempo.
EDITAR 24/10/18: de [email protected] después de semanas de correspondencia sobre no recibir anuncios después de las actualizaciones:
Gracias por compartir los registros del dispositivo. Según los registros, parece un problema existente y esto está en nuestra lista de prioridades y nuestro equipo está trabajando en la solución y esto solo está sucediendo en los dispositivos Android O y P ''''.
¿Solo dispositivos O y P? Esas son las dos últimas versiones, O salió el 25 de septiembre de 2017. Vaya.
En mi caso, el complemento de servicios de Google no generó el archivo
values.xml
requerido del archivo
google-services.json
.
La biblioteca Firebase usa este archivo de valores generados para inicializarse y parece que no arroja un error si no se puede encontrar el archivo de valores.
Verifique que el archivo de valores exista en la siguiente ubicación y se
google-sevices.json
con las cadenas apropiadas de su archivo
google-sevices.json
:
app/build/generated/res/google-services/{build_type}/values/values.xml
y / o
app/build/generated/res/google-services/{flavor}/{build_type}/xml/global_tracker.xml
Para obtener más detalles, consulte: https://developers.google.com/android/guides/google-services-plugin
Mi caso particular fue causado por el uso de una versión de herramientas de gradle que era demasiado avanzada para la versión de Android Studio que estaba ejecutando (es decir, asegúrese de ejecutar las herramientas de grado v3.2.X-YYY con Android Studio v3.2).
Haga clic en Herramientas> Firebase para abrir la ventana Asistente.
Haga clic para expandir una de las funciones enumeradas (por ejemplo, Analytics), luego haga clic en el enlace del tutorial proporcionado (por ejemplo, Registrar un evento de Analytics).
Haga clic en el botón Conectar a Firebase para conectarse a Firebase y agregar el código necesario a su aplicación.
La razón para esto es com.google.gms: versión de google-services . Cuando estaba usando 4.1.0 , me enfrenté al mismo error. Luego rebajo la versión. antes de
classpath ''com.android.tools.build:gradle:3.3.0''
classpath ''com.google.gms:google-services:4.1.0''
Después
classpath ''com.android.tools.build:gradle:3.3.0''
classpath ''com.google.gms:google-services:3.2.0''
Espero que resuelva el error.
Lo primero que debe agregar com.google.gms: google-services: xxx en el nivel raíz build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath ''com.android.tools.build:gradle:2.3.1''
classpath ''com.google.gms:google-services:3.0.0''
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
Después de eso, debe aplicar el complemento: ''com.google.gms.google-services'' en app / build.gradle
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
androidTestCompile(''com.android.support.test.espresso:espresso-core:2.2.2'', {
exclude group: ''com.android.support'', module: ''support-annotations''
})
compile ''com.android.support:appcompat-v7:25.3.1''
compile ''com.android.support:design:25.3.1''
compile ''com.android.support:cardview-v7:25.3.1''
compile ''com.google.android.gms:play-services-gcm:9.8.0''
compile ''com.google.android.gms:play-services-maps:9.8.0''
compile ''com.google.android.gms:play-services-location:9.8.0''
compile ''com.google.firebase:firebase-messaging:9.8.0''
testCompile ''junit:junit:4.12''
}
apply plugin: ''com.google.gms.google-services''
y si todavía tiene problemas, entonces necesita agregar
FirebaseApp.initializeApp(this);
justo antes de llamar
FirebaseInstanceId.getInstance().getToken();
Me faltaba la línea siguiente en mi archivo app / build.gradle
apply plugin: ''com.google.gms.google-services''
y una vez limpio proyecto y ejecutar de nuevo. Eso me lo arregló.
Mi problema no se resolvió con este procedimiento
FirebaseApp.initializeApp(this);
Así que intenté algo más y ahora mi base de fuego se ha inicializado con éxito. Intente agregar lo siguiente en la aplicación module.gradle
BuildScript{
dependencies {..
classpath : "com.google.firebase:firebase-plugins:1.1.5"
..}
}
dependencies {...
implementation : "com.google.firebase:firebase-perf:16.1.0"
implementation : "com.google.firebase:firebase-core:16.0.3"
..}
Motivo y solución: este es el error común que obtendrá la mayor parte del tiempo. Motivo: cuando integra su proyecto con Firebase, agrega las dependencias
implementation ''com.google.firebase:firebase-auth:16.1.0''
implementation ''com.google.android.gms:play-services-auth:16.0.1''
y classpath
classpath ''com.google.gms:google-services:4.1.0''
solo necesitas actualizarlos
Así es como puedes actualizar
No
necesitamos llamar a
FirebaseApp.initializeApp(this);
en cualquier lugar de forma manual.
y nosotros tampoco deberíamos.
Simplemente enfrenté el mismo problema al respecto y obtuve una solución inesperada y extraña.
De esta respuesta:
He eliminado las
tools:node="replace"
y está funcionando a la perfección.
Otra posible solución: pruebe Android Studio diferente si está utilizando algunas versiones beta. Ayudado por mi. El nuevo Android Studio simplemente no agregó Firebase correctamente. En mi caso 3.3preview
Después de investigar un poco más, descubrí que el problema era que el nuevo estudio de Android inicia el proyecto con la versión más reciente de los Servicios de Google y parece que fue el problema original. Como @Ammar Bukhari sugirió que este cambio ayudó:
classpath ''com.google.gms: google-services: 4.1.0'' -> classpath ''com.google.gms: google-services: 4.0.0''
Parece que
google-services:4.1.0
tiene un problema.
Cualquiera lo rebaja a
classpath ''com.google.gms:google-services:4.0.0''
o actualizarlo a
classpath ''com.google.gms:google-services:4.2.0''
dependencies {
classpath ''com.android.tools.build:gradle:3.3.0-alpha08''
classpath ''com.google.gms:google-services:4.2.0''
/*classpath ''com.google.gms:google-services:4.1.0'' <-- this was the problem */
}
Espero eso ayude
Si está utilizando
FirebaseUI
,
no necesita
FirebaseApp.initializeApp(this);
en su código según
la muestra
.
Asegúrese de agregar a su nivel raíz build.gradle:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
...
classpath ''com.google.gms:google-services:3.1.1''
...
}
}
Luego, en el archivo Gradle de nivel de módulo :
dependencies {
...
// 1 - Required to init Firebase automatically (THE MAGIC LINE)
implementation "com.google.firebase:firebase-core:11.6.2"
// 2 - FirebaseUI for Firebase Auth (Or whatever you need...)
implementation ''com.firebaseui:firebase-ui-auth:3.1.2''
...
}
apply plugin: ''com.google.gms.google-services''
Eso es. No necesitas más.
Si recientemente actualizó su Android Studio a 3.3.1 que tiene un problema con las dependencias de com.google.gms: google-services (por debajo de 4.2.0). Actualice com.google.gms: google-services a 4.2.0.
dependencies {
classpath ''com.android.tools.build:gradle:3.3.1''
classpath ''com.google.gms:google-services:4.2.0''
}
Supongo que hay problemas de compatibilidad con la versión de google-services y las versiones de firebase.
Cambié en el archivo build.gradle del Proyecto, la dependencia
classpath ''com.google.gms: google-services: 4.1.0'' a 4.2.0
y luego actualizó las dependencias build.gradle del módulo a:
implementación ''com.google.firebase: firebase-database: 16.0.6''
implementación ''com.google.firebase: firebase-core: 16.0.7''
Todo funciona de maravilla, no es necesario escribir FirebaseApp.initializeApp (esto);
Tendremos que inicializar Firebase en la función onCreate de la clase de aplicación.
package com.rocks.music.videoplayer;
import android.app.Application;
import android.content.Context;
import com.google.firebase.FirebaseApp;
/**
* Created by ashish123 on 22/8/15.
*/
public class MyApplication extends Application {
private static MyApplication mInstance;
@Override
public void onCreate() {
super.onCreate();
mInstance = this;
try {
FirebaseApp.initializeApp(this);
}
catch (Exception e) {
}
}
public static Context getInstance() {
return mInstance;
}
}
Código en archivo de manifiesto: -
<application
android:name="com.rocks.music.videoplayer.MyApplication"
android:allowBackup="true"
android:icon="@drawable/app_icon"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
Tuve este mismo problema hace algún tiempo.
Estás intentando obtener una instancia de Firebase sin inicializarla. Agregue esta línea de código antes de intentar obtener una instancia de Firebase:
FirebaseApp.initializeApp(this);
Una de las razones de este hecho podría ser olvidarse de agregar permisos
android.permission.INTERNET
en
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
cambiando
classpath ''com.google.gms:google-services:4.1.0''
a
classpath ''com.google.gms:google-services:4.0.1''
Funciona para mi
para mí estaba actualizando dependencias de com.google.gms: google-services dentro de build.gradle para
buildscript {
repositories {
jcenter()
mavenCentral()
maven {
url ''https://maven.google.com/''
name ''Google''
}
google()
}
dependencies {
classpath ''com.android.tools.build:gradle:3.3.2''
classpath ''com.google.gms:google-services:4.2.0''
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
use com.google.gms: google-services: 4.0.1 ''en lugar de 4.1.0
Firebase instalado a través de las herramientas de Android Studio ... Firebase ...
Hice la instalación a través de las herramientas integradas de Android Studio (siguiendo los últimos documentos de Firebase). Esto instaló las dependencias básicas, pero cuando intenté conectarme a la base de datos, siempre me dio el error que necesitaba llamar a inicializar primero, aunque estaba:
FirebaseApp predeterminado no se inicializa en este proceso. Asegúrese de llamar primero a FirebaseApp.initializeApp (Contexto).
Recibí este error sin importar lo que hice.
Finalmente, después de ver un comentario en una de las otras respuestas, cambié lo siguiente en mi gradle de la versión 4.1.0 a:
classpath ''com.google.gms:google-services:4.0.1''
Cuando hice eso, finalmente vi un error que me ayudó:
Falta el archivo google-services.json. El complemento de servicios de Google no puede funcionar sin él. Ubicación buscada: C: / Users /% username% / AndroidStudioProjects / TxtFwd / app / src / nullnull / debug / google-services.json
C: / Users /% username% / AndroidStudioProjects / TxtFwd / app / src / debug / nullnull / google-services.json
C: / Users /% username% / AndroidStudioProjects / TxtFwd / app / src / nullnull / google-services.json
C: / Users /% username% / AndroidStudioProjects / TxtFwd / app / src / debug / google-services.json
C: / Users /% username% / AndroidStudioProjects / TxtFwd / app / src / nullnullDebug / google-services.json
C: / Users /% username% / AndroidStudioProjects / TxtFwd / app / google-services.json
Ese es el problema. Parece que la versión 4.1.0 no da ese error de compilación por alguna razón, no menciona que le falta un archivo google-services.json. No tengo el archivo google-services.json en mi aplicación, así que salí y lo agregué.
Pero como se trataba de una actualización que utilizaba una base de datos de firsbase en tiempo real, nunca antes había tenido que generar ese archivo. Fui a firebase y lo generé y lo agregué y solucionó el problema.
Cambiado de nuevo a 4.1.0
Una vez que descubrí todo esto, volví a cambiar la variable classpath (a 4.1.0) y la reconstruí y se bloqueó nuevamente con el error de que no se ha inicializado.
Problemas de raíz
- Construir con 4.1.0 no le proporciona un error válido en la precompilación, por lo que es posible que no sepa qué está sucediendo.
- Ejecutar contra 4.1.0 provoca el error de inicialización.
classpath ''com.google.gms:google-services:4.1.0''
tiene un problema. en su lugar use:
classpath ''com.google.gms:google-services:4.2.0''