web-dev-qa-db-fra.com

Impossible d'obtenir le fournisseur com.google.Android.gms.ads.MobileAdsInitProvider: Java.lang.IllegalStateException: Pourquoi?

Je mets à jour mon Android Studio (3.2.1) et son sdk vers la dernière version. Après cela, il a fallu mettre à jour manuellement Manifest en ajoutant les balises suivantes:

<application
    Android:allowBackup="true"
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name"
    Android:roundIcon="@drawable/ic_launcher"
    Android:supportsRtl="true"
    Android:theme="@style/AppTheme"
    tools:ignore="AllowBackup,GoogleAppIndexingWarning">

    <meta-data
        Android:name="com.google.Android.gms.ads.APP_ID"
        Android:value="ca-app-pub-#############"/>

    <activity Android:name=".MainActivity">
        <intent-filter>
            <action Android:name="Android.intent.action.MAIN" />

            <category Android:name="Android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity Android:name=".NewActivity" />
    <activity Android:name=".PreviewActivity" />
    <activity Android:name=".EditActivity" />
    <activity
        Android:name=".preferencesdata.AboutActivity"
        Android:theme="@style/Theme.AppCompat.DayNight.NoActionBar" />
    <activity Android:name=".preferencesdata.SettingsActivity"
        Android:label="@string/settings">
        <meta-data
            Android:name="Android.support.PARENT_ACTIVITY"
            Android:value=".MainActivity"/>
    </activity>
</application>

moyennant quoi, à la place, l'identifiant de l'application, je mets le véritable identifiant de mon application. La valeur a également été modifiée et correspond à l'identifiant de bloc d'annonce de droite, comme illustré ici https://developers.google.com/admob/Android/quick-start . J'ai aussi appelé cette fonction dans le MainActivity.kt:

MobileAds.initialize(this, resources.getString(R.string.banner_ad_unit_id)) 

Cependant, le problème n'a pas pu être résolu. Il imprime toujours comme suit: 

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.easyapps.cryptnote, PID: 3991
    Java.lang.RuntimeException: Unable to get provider com.google.Android.gms.ads.MobileAdsInitProvider: Java.lang.IllegalStateException: 

    ******************************************************************************
    * The Google Mobile Ads SDK was initialized incorrectly. AdMob publishers    *
    * should follow the instructions LINK to add a valid  *
    * App ID inside the AndroidManifest. Google Ad Manager publishers should     *
    * follow instructions here: LINK.                           *
    ******************************************************************************


        at Android.app.ActivityThread.installProvider(ActivityThread.Java:5156)
        at Android.app.ActivityThread.installContentProviders(ActivityThread.Java:4748)
        at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4688)
        at Android.app.ActivityThread.-wrap1(ActivityThread.Java)
        at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1405)
        at Android.os.Handler.dispatchMessage(Handler.Java:102)
        at Android.os.Looper.loop(Looper.Java:148)
        at Android.app.ActivityThread.main(ActivityThread.Java:5417)
        at Java.lang.reflect.Method.invoke(Native Method)
        at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:726)
        at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:616)
     Caused by: Java.lang.IllegalStateException: 

    ******************************************************************************
    * The Google Mobile Ads SDK was initialized incorrectly. AdMob publishers    *
    * should follow the instructions here: LINK to add a valid  *
    * App ID inside the AndroidManifest. Google Ad Manager publishers should     *
    * follow instructions here: LINK.                           *
    ******************************************************************************


        at com.google.Android.gms.internal.ads.zzmn.attachInfo(Unknown Source)
        at com.google.Android.gms.ads.MobileAdsInitProvider.attachInfo(Unknown Source)
        at Android.app.ActivityThread.installProvider(ActivityThread.Java:5153)
            ... 10 more

Quelqu'un pourrait-il me dire pourquoi cela se produit ou m'aider à le résoudre? J'ai essayé de google le problème, mais il n'y a pas de solution. Cela semble être un nouveau problème qui n’a toujours pas été résolu. Merci d'avance.

13
Mark Delphi

Google a mis à jour les annonces Google. Par conséquent, si vous mettez à jour votre bibliothèque Admob progressivement, vous devez l'ajouter à votre manifeste.

<manifest>
   <application>
      <!-- TODO: Replace with your real AdMob app ID -->
      <meta-data
          Android:name="com.google.Android.gms.ads.APPLICATION_ID"
          Android:value="ca-app-pub-################~##########"/>
  </application>
</manifest>
8
Atif Mukhtiar

Cela est dû à la mise à jour du SDK AdMob. Vous devez maintenant ajouter appID dans votre fichier manifeste. 

<application> . . . 
      <meta-data 
           Android:name="com.google.Android.gms.ads.APPLICATION_ID" 
           Android:value="ca-app-pub-################~##########"/>
</application>

Vous pouvez obtenir appID à partir d'ici -> Google addmob -> Sélectionner l'application -> Paramètres de l'application -> ID de l'application. 

Vous pouvez en lire plus à partir d’ici ads-developers

Si vous souhaitez utiliser des annonces test avant de créer votre propre identifiant, vérifiez les identifiants de test AdMob à partir d'ici developers.google .

J'espère que ceci vous aidera. Merci :)

43
Saveen Dhiman

Ajouter dans votre fichier manifeste

<meta-data Android:name="com.google.Android.gms.ads.AD_MANAGER_APP" Android:value="true" />

5
Vivek Hirpara

Problème résolu. J'ai utilisé le mauvais identifiant d'un AdUnit. Il a besoin du véritable identifiant d'application de Google AddMob: Google AdMob -> Sélectionner l'application -> Paramètres de l'application -> Identifiant de l'application

0
Mark Delphi

Je pense que le nom devrait être "APPLICATION_ID" et non "APP_ID"

0
user1043409

Le SDK Google Mobile Ads v17.0.0 pour Android vient de paraître et il s'accompagne de ces modifications importantes.

Changements requis dans AndroidManifest.xml

À partir de la version 17.0.0, si vous êtes un éditeur AdMob, vous devez maintenant ajouter votre identifiant d'application AdMob dans votre fichier AndroidManifest.xml. Une fois que vous avez trouvé votre identifiant d'application AdMob dans l'interface utilisateur AdMob, ajoutez-le à votre manifeste en ajoutant la balise suivante:

<manifest>
    <application>
        <!-- TODO: Replace with your real AdMob app ID -->
        <meta-data
            Android:name="com.google.Android.gms.ads.APPLICATION_ID"
            Android:value="ca-app-pub-################~##########"/>
    </application>
</manifest>

Si cette balise n'est pas ajoutée, l'application se bloquera au lancement de l'application avec un message commençant par The Google Mobile Ads SDK was initialized incorrectly.

Que faire si j'utilise Google Ad Manager au lieu de AdMob?

Les éditeurs utilisant Google Ad Manager devront se déclarer en tant qu'application Ad Manager avec une balise différente pour éviter le même blocage:

<manifest>
    <application>
        <meta-data
            Android:name="com.google.Android.gms.ads.AD_MANAGER_APP"
            Android:value="true"/>
    </application>
</manifest>

Voir le lien pour plus de détails.

0
0xAliHn