web-dev-qa-db-ger.com

Anbieter com.google.Android.gms.ads.MobileAdsInitProvider kann nicht abgerufen werden: Java.lang.IllegalStateException: Warum?

Ich aktualisiere mein Android Studio (3.2.1) und seine SDK auf die neueste Version. Danach musste Manifest manuell aktualisiert werden, indem folgende Tags hinzugefügt wurden:

<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>

wobei die App-ID stattdessen die tatsächliche ID meiner App ist. Der Wert wurde ebenfalls in die richtige Anzeigenblock-ID geändert, wie hier gezeigt https://developers.google.com/admob/Android/quick-start . Ich habe diese Funktion auch in der MainActivity.kt aufgerufen:

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

Das Problem konnte jedoch nicht gelöst werden. Es wird immer noch wie folgt gedruckt: 

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

Könnte jemand mir mitteilen, warum es passiert, oder mir helfen, es zu lösen? Ich habe versucht, das Problem zu googeln, aber es gibt keine Lösungen. Es scheint ein neues, noch ungelöstes Problem zu sein. Vielen Dank im Voraus.

13
Mark Delphi

Google hat ein Update für die Google-Anzeigen gegeben. Wenn Sie also Ihre Admob-Bibliothek in Gradle aktualisieren, müssen Sie dies in Ihrem Manifest hinzufügen.

<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

Dies geschah aufgrund eines aktualisierten AdMob SDK. Jetzt müssen Sie appID in Ihre Manifestdatei einfügen. 

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

AppID erhalten Sie hier -> Google Addmob -> App auswählen -> App-Einstellungen -> App-ID. 

Weitere Informationen finden Sie hier ads-developer

Wenn Sie Testanzeigen verwenden möchten, bevor Sie Ihre eigene ID angeben, überprüfen Sie die AdMob-Test-IDs hier developer.google .

Hoffe, das wird dir helfen. Vielen Dank :)

43
Saveen Dhiman

In deiner Manifest-Datei hinzufügen

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

5
Vivek Hirpara

Problem gelöst. Ich habe die falsche ID einer AdUnit verwendet. Es benötigt die echte App-ID von Google AddMob: Google AdMob -> App auswählen -> App-Einstellungen -> App-ID!

0
Mark Delphi

Ich denke, der Name sollte "APPLICATION_ID" und nicht "APP_ID" sein.

0
user1043409

Das Google Mobile Ads SDK v17.0.0 für Android wurde gerade veröffentlicht und bringt diese wichtigen Änderungen mit.

Erforderliche Änderungen an AndroidManifest.xml

Ab Version 17.0.0 müssen Sie als AdMob-Publisher Ihre AdMob-App-ID in Ihre AndroidManifest.xml-Datei aufnehmen. Wenn Sie Ihre AdMob-App-ID in der AdMob-Benutzeroberfläche gefunden haben, fügen Sie sie Ihrem Manifest hinzu und fügen Sie das folgende Tag hinzu:

<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>

Wenn dieses Tag nicht hinzugefügt wird, stürzt die App beim Start der App mit einer Meldung ab, die mit The Google Mobile Ads SDK was initialized incorrectly. beginnt.

Was ist, wenn ich Google Anzeigenmanager anstelle von AdMob verwende?

Publisher, die Google Anzeigenmanager verwenden, müssen sich als Anzeigenmanager-App mit einem anderen Tag deklarieren, um denselben Absturz zu vermeiden:

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

Siehe Link für weitere Details.

0
0xAliHn

In Unity3D ab Version 3.18 und Ad SDK Version 7.45.0 müssen Sie diese Daten unter Menü: Elemente> Google Mobile-Anzeigen> Einstellungen einrichten. Diese Daten werden automatisch in die Manifestdatei geschrieben.

Das direkte Hinzufügen von APPLICATION_ID & AD_MANAGER_APP in die Manifestdatei, die bereits in anderen Antworten angegeben ist, stürzte für mich immer noch ab.

0
xySVerma