169 votes

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

Je suis en train de tester le nouvel outil Crash : https://firebase.google.com/docs/crash/

Après avoir suivi les étapes, l'application se lance et se plante 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

1 votes

Avez-vous une applicationID dans votre build.gradle ?

1 votes

@IanBarber : Oh wow, en éditant build.gradle je l'ai supprimé. C'est ma faute.

0 votes

Uniquement stackoverflow.com/a/38224316/4663544 a fonctionné pour moi

162voto

norbDEV Points 1358

1.

Ajouter le applicationId dans le fichier build.gradle de l'application :

android {
    ...
    defaultConfig {
        applicationId "com.example.my.app"
        ...
    }
}

Et que Clean Project -> Build ou Projet de reconstruction


2. Si votre minSdkVersion <= 20 ( https://developer.Android.com/studio/build/multidex )

Utilisez Multidex correctement.

le fichier build.gradle de l'application

android {
...               
    defaultConfig {
    ....
        multiDexEnabled true
    }
    ...
}

dependencies {
    implementation 'com.android.support:multidex:1.0.3'
    ...
}

manifeste.xml

<application
    ...
    android:name="android.support.multidex.MultiDexApplication" >
    ...

3.

Si vous utilisez une classe d'application personnalisée

public class MyApplication extends MultiDexApplication {
    @Override
    protected void attachBaseContext(Context context) {
        super.attachBaseContext(context);
        MultiDex.install(this);
    }
}

manifeste.xml

<application
    ...
    android:name="com.example.my.app.MyApplication" >
    ...

1 votes

J'ai eu la même erreur et elle a été corrigée par la solution. Je ne sais pas pourquoi, mais ça marche.

0 votes

Cela a sauvé la journée pour moi. J'ai eu l'erreur alors que j'essayais d'exécuter une application Cordova sur un appareil Android.

1 votes

J'ai le même problème et l'applicationId sur mon build.gradle. Que puis-je faire dans ce cas ?

94voto

luizMello Points 2308

J'ai eu le même problème avec des appareils ayant un SDK < 22, mais pour moi la raison est le MultiDex, le MultiDex.install doit être dans le attachBaseContext méthode.

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 {

    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'

    }
...

4 votes

Cela fonctionne, mais il y a une classe spéciale pour faire cela au lieu de surcharger une fonction et elle s'appelle MultiDexApplication, voir la réponse ci-dessous. stackoverflow.com/questions/37312103/

0 votes

Oui, ça a marché pour moi aussi, j'écris toujours MultiDex.install(this) dans la méthode onCreate() merci mec

0 votes

Dans mon cas, j'ai simplement mis à jour la compilation 'com.Android.support:multidex:1.0.1' à la dernière version disponible.

75voto

Ye Min Htut Points 2111

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

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

MonApplication.java

public class MyApplication extends MultiDexApplication{
     ...
}

AndroidManifest.xml

<application
      android:name="your.package.name.MyApplication"
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      ...
      />

J'espère que cela vous aidera.

0 votes

Cela a parfaitement fonctionné ! Merci beaucoup :)

3 votes

Comment savez-vous ces choses ? Qui te l'a dit ? Je viens de commencer à avoir ce problème après avoir mis à jour Android Studio 3 et installé des applications "debug". La version "Release" fonctionnait bien. Maintenant, avec votre solution, la version "Debug" fonctionne également. Je suis tellement heureux que des gens comme vous existent ! !!

0 votes

C'est une réponse parfaite.

36voto

Barthy Points 1163

Si vous rencontrez le même problème mais que vous disposez déjà de l'outil applicationId en build.gradle vous pouvez également essayer ce qui suit :

  • dans Android Studio : Build > Clean Project
  • dans d'autres IDE : Clean, Rebuild, tout ce que vous voulez...

3 votes

Et si vous avez toujours des problèmes, supprimez le répertoire de construction et réessayez. J'étais bloqué jusqu'à ce que je fasse ça :)

0 votes

Suppression uniquement build a fonctionné pour moi. Il semble qu'il ait été perturbé par ma dernière extraction du dépôt.

15voto

Juan Salamanca Points 307

Vous devez être sûr

d'ajouter cette ligne à votre manifeste

https://developer.Android.com/studio/run/index.html#instant-run

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

0 votes

Cela a aussi fonctionné pour moi avec multiDexEnabled true.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X