No se pudo obtener el proveedor com.google.firebase.provider.FirebaseInitProvider

Estoy probando la nueva herramienta Crash: https://firebase.google.com/docs/crash/

Después de seguir los pasos, la aplicación se inicia y se bloquea diciendo:

05-18 17:28:18.870 28743 28743 E AndroidRuntime: java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.IllegalStateException: Incorrect provider authority in manifest. Most likely due to a missing applicationId variable in application's build.gradle. 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at android.app.ActivityThread.installProvider(ActivityThread.java:5156) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at android.app.ActivityThread.installContentProviders(ActivityThread.java:4748) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at android.app.ActivityThread.-wrap1(ActivityThread.java) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at android.os.Looper.loop(Looper.java:148) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5417) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: Caused by: java.lang.IllegalStateException: Incorrect provider authority in manifest. Most likely due to a missing applicationId variable in application's build.gradle. 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at com.google.firebase.provider.FirebaseInitProvider.zza(Unknown Source) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: at android.app.ActivityThread.installProvider(ActivityThread.java:5153) 05-18 17:28:18.870 28743 28743 E AndroidRuntime: ... 10 more 

Estaba con el mismo problema en dispositivos con SDK <22, pero para mí el motivo es MultiDex, la instalación de MultiDex.install debe estar en el método attachBaseContext .

Si está usando MultiDex, intente esto:

 public class YourApplication extends Application { @Override protected void attachBaseContext(Context context) { super.attachBaseContext(context); MultiDex.install(this); } @Override public void onCreate() { super.onCreate(); Realm.init(this); //initialize other plugins } } 

app / build.gradle:

 android { compileSdkVersion 24 buildToolsVersion "24.0.2" defaultConfig { applicationId "com.test.app" minSdkVersion 16 targetSdkVersion 24 versionCode 1 versionName "1.0" multiDexEnabled true } dexOptions { javaMaxHeapSize "4g" } .... } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:24.2.1' ... compile 'com.google.firebase:firebase-messaging:9.6.1' compile 'com.google.android.gms:play-services:9.6.1' compile 'com.android.support:multidex:1.0.1' } ... 

La respuesta aceptada no resolvió mi problema.

Si está utilizando Multidex, su aplicación debe extender la aplicación MultiDexApplication lugar de la Application .

MyApplication.java

 public class MyApplication extends MultiDexApplication{ ... } 

AndroidManifest.xml

  

Espero eso ayude.

Si obtiene el mismo problema pero ya tiene el build.gradle applicationId establecido en build.gradle , también puede intentar lo siguiente:

  • en Android Studio: Build > Clean Project
  • en otros IDEs: limpiar, reconstruir, lo que sea …

Tuve el mismo problema en los dispositivos Pre Lollipop. Para resolver eso, hice lo siguiente. Mientras tanto, estaba usando multiDex en el proyecto.

1. agregue esto para build.gradle en el módulo: aplicación

 multiDexEnabled = true dexOptions { javaMaxHeapSize "4g" } 

2. agrega esta dependencia

 compile 'com.android.support:multidex:1.0.1' 

3. Luego en la aplicación principal

 public class MainApplication extends MultiDexApplication { private static MainApplication mainApplication; @Override public void onCreate() { super.onCreate(); mainApplication = this; } @Override protected void attachBaseContext(Context context) { super.attachBaseContext(context); MultiDex.install(this); } public static synchronized MainApplication getInstance() { return mainApplication; } } 

4. En el archivo de manifiestos

  

Esto funciona para mí Espero que esto le ayude también 🙂

No incluya toda la biblioteca de servicios de juego, pero use la que necesita. Vuelva a colocar la línea en su build.gradle :

 compile 'com.google.android.gms:play-services:9.6.1' 

con el apropiado de las API de servicios de Google Play , como por ejemplo:

 compile 'com.google.android.gms:play-services-gcm:9.6.1' 

Agregue esto a su build.gradle de nivel de módulo:

 android { defaultConfig { .... multiDexEnabled true } ... } dependencies { compile 'com.android.support:multidex:1.0.1' ......... } 

Si anula la clase de la Application , MultiDexApplication desde MultiDexApplication :

 YourApplicationClass extends MultiDexApplication 

Si no puedes extenderlo desde la clase MultiDexApplication , reemplaza el método attachBaseContext() siguiente manera:

 protected void attachBaseContext(Context base) { super.attachBaseContext(context); Multidex.install(this); } 

Y no ejecute nada antes de que se MultiDex.install(this) .

Si no anula la clase de la Application , simplemente edite su archivo de manifiesto de la siguiente manera:

 < ?xml version="1.0" encoding="utf-8"?>   ...  ......  

Haz cambios como este

En construcción (aplicación) ::

  defaultConfig { multiDexEnabled true } dependencies { compile 'com.android.support:multidex:1.0.1' } 

En Manifest ::

   

En BaseApplication ::

 public class BaseApplication extends Application{ @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); } } 

Esto debería funcionar:

Paso 1:

 defaultConfig { applicationId "service.ingreens.com.gpsautoon" minSdkVersion 17 targetSdkVersion 25 versionCode 1 versionName "1.0" multiDexEnabled true testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } 

Paso 2:

 compile 'com.android.support:multidex:1.0.1' 

Paso 3: tomar otra clase

 public class MyApplication extends MultiDexApplication { } 

Paso 4: agrega esta línea en manifiesto

   

En mi caso, el problema se resolvió agregando esta línea al módulo build.gradle:

// AGREGAR ESTO EN LA PARTE INFERIOR

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

Fuente

En lugar de agregar manualmente el nombre del paquete en build.gradle , puede hacerlo de esta manera:

primero agregue esta línea al principio

 import java.util.regex.Pattern 

A continuación, agregue esto en el predeterminadoConfig

 android { ... defaultConfig { ... applicationId = doExtractStringFromManifest("package") ... } ... } 

Y finalmente agregue el método doExtractStringFromManifest

 def doExtractStringFromManifest(name) { def manifestFile = file(android.sourceSets.main.manifest.srcFile) def pattern = Pattern.compile(name + "=\"(\\S+)\"") def matcher = pattern.matcher(manifestFile.getText()) matcher.find() return matcher.group(1) } 

Como hay muchos comentarios de Cordova sobre la respuesta, si trabajas con Cordova, no deberías editar realmente build.gradle , tiene un comentario al principio que dice

// ¡ARCHIVO GENERADO! ¡NO EDITAR!

Por lo tanto, si está utilizando un Cordova, lo mejor que puede hacer es actualizar a cordova-android 5.1.0 o superior donde estos cambios ya están presentes.

La mía era porque Firebase SDK en el archivo Gradle estaba configurado en una versión de número incorrecta.

Eliminé los Debs de Firebase de Gradle y los volví a instalar con el Firebase Assistant