Impossible d’obtenir le fournisseur com.google.firebase.provider.FirebaseInitProvider

Je teste le nouvel outil Crash: https://firebase.google.com/docs/crash/

Après avoir franchi les étapes, l’application se lance et se bloque en disant:

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 

J’étais avec le même problème dans les appareils avec SDK <22, mais pour moi, la raison en est le MultiDex, le MultiDex.install doit être dans la méthode attachBaseContext .

Si vous utilisez MultiDex, essayez ceci:

 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 { comstackSdkVersion 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 { comstack fileTree(dir: 'libs', include: ['*.jar']) comstack 'com.android.support:appcompat-v7:24.2.1' ... comstack 'com.google.firebase:firebase-messaging:9.6.1' comstack 'com.google.android.gms:play-services:9.6.1' comstack 'com.android.support:multidex:1.0.1' } ... 

La réponse acceptée n’a pas résolu mon problème.

Si vous utilisez Multidex, votre application doit étendre MultiDexApplication au lieu de Application .

MyApplication.java

 public class MyApplication extends MultiDexApplication{ ... } 

AndroidManifest.xml

  

J’espère que cela aide.

Si vous rencontrez le même problème mais que le paramètre applicationId déjà défini dans build.gradle , vous pouvez également essayer ce qui suit:

  • dans Android Studio: Build > Clean Project
  • dans d’autres IDE: Clean, Rebuild, peu importe …

J’ai eu le même problème dans les dispositifs Pre Lollipop. Pour résoudre ce que j’ai fait comme suit. Pendant ce temps, j’utilisais multiDex dans le projet.

1. ajoutez ceci pour build.gradle dans le module: app

 multiDexEnabled = true dexOptions { javaMaxHeapSize "4g" } 

2. ajoutez cette dépendance

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

3. Puis dans l’application principale

 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.Dans le fichier de manifestes

  

Cela fonctionne pour moi. J'espère que ça va t'aider aussi 🙂

N’incluez pas toute la bibliothèque de services de lecture mais utilisez celle dont vous avez besoin. Remplacez la ligne dans votre build.gradle :

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

avec celle appropriée des API des services Google Play , comme par exemple:

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

Ajoutez ceci à votre build.gradle au niveau du module:

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

Si vous remplacez la classe d’ Application MultiDexApplication partir de MultiDexApplication :

 YourApplicationClass extends MultiDexApplication 

Si vous ne pouvez pas l’étendre depuis la classe MultiDexApplication , remplacez la méthode attachBaseContext() comme suit:

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

Et ne lancez rien avant que MultiDex.install(this) soit exécuté.

Si vous ne remplacez pas la classe Application , modifiez simplement votre fichier manifeste comme suit:

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

Faites des changements comme ça

Dans build (app) ::

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

Dans Manifeste ::

   

Dans BaseApplication ::

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

Cela devrait fonctionner:

Étape 1:

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

Étape 2:

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

Étape 3: Prendre un autre cours

 public class MyApplication extends MultiDexApplication { } 

Étape 4: Ajouter cette ligne sur le manifeste

   

Dans mon cas, le problème a été résolu en ajoutant cette ligne au module build.gradle:

// AJOUTEZ CELA AU FOND

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

La source

Au lieu d’append manuellement le nom du package sur le build.gradle , vous pouvez le faire de la manière suivante:

append d’abord cette ligne au début

 import java.util.regex.Pattern 

Puis ajoutez ceci sur le defaultConfig

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

Et enfin, ajoutez la méthode doExtractSsortingngFromManifest

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

Comme il y a beaucoup de commentaires de Cordova sur la réponse, si vous travaillez avec Cordova, vous ne devriez pas vraiment éditer le build.gradle , il y a un commentaire au début qui dit

// FICHIER GÉNÉRÉ! NE PAS MODIFIER!

Donc, si vous utilisez un Cordova, la meilleure chose à faire est de mettre à jour Cordova-android 5.1.0 ou supérieur où ces modifications sont déjà présentes.

Le mien était parce que le SDK Firebase dans le fichier Gradle était défini sur une version de numéro erronée.

J’ai retiré les debs de Firebase de Gradle et les ai réinstallés avec Firebase Assistant