web-dev-qa-db-ja.com

プロバイダーcom.google.Android.gms.ads.MobileAdsInitProviderを取得できません:Java.lang.IllegalStateException:なぜですか?

Android Studio(3.2.1)とそのSDKを最新バージョンに更新します。その後、次のタグを追加して、マニフェストの手動更新が必要になりました。

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

その代わりに、アプリIDにアプリの実際のIDを入力します。ここに示すように、値は正しい広告ユニットIDに変更されました https://developers.google.com/admob/Android/quick-start 。また、MainActivity.ktでこの関数を呼び出しました。

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

ただし、問題を解決できませんでした。それでも次のように印刷されます。

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

なぜそれが起こるのか、それを解決するのを手伝ってくれる人がいますか?問題をグーグルで検索しようとしましたが、解決策はありません。これは、まだ解決されていない新しい問題のようです。事前に感謝します。

28
Mark Delphi

GoogleはGoogle広告の更新を提供したため、Admobライブラリをgradleで更新した場合、マニフェストに追加する必要があります。

<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>
20
Atif Mukhtiar

これは、更新されたAdMob SDKが原因で発生しました。次に、マニフェストファイルにappIDを追加する必要があります。

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

ここからappIDを取得できます-> Google addmob->アプリの選択->アプリの設定->アプリID。

詳しくはこちらをご覧ください ads-developers

独自のIDを入力する前にテスト広告を使用する場合は、ここからAdMobテストIDを確認してください developers.google

これがお役に立てば幸いです。ありがとう:)

57
Saveen

マニフェストファイルに追加

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

15
Vivek Hirpara

名前は「APP_ID」ではなく「APPLICATION_ID」である必要があると思います

1
user1043409

問題が修正されました。 AdUnitの間違ったIDを使用しました。 Google AddMobの実際のアプリIDが必要です:Google AdMob->アプリの選択->アプリの設定->アプリID!

0
Mark Delphi

Android向けのGoogle Mobile Ads SDK v17.0.0がリリースされたばかりで、これらの重要な変更が伴います。

AndroidManifest.xmlの変更が必要です

バージョン17.0.0以降、AdMobパブリッシャーの場合、AndroidManifest.xmlファイルにAdMobアプリIDを追加する必要があります。 AdMob UIでAdMobアプリIDを見つけたら、次のタグを追加してマニフェストに追加します。

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

このタグを追加しないと、アプリの起動時にアプリがクラッシュし、The Google Mobile Ads SDK was initialized incorrectly.で始まるメッセージが表示されます

AdMobの代わりにGoogle Ad Managerを使用している場合はどうなりますか?

Google Ad Managerを使用しているサイト運営者は、同じクラッシュを回避するために、異なるタグを持つAd Managerアプリとして自分自身を宣言する必要があります。

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

詳細については、 link をご覧ください。

0
0xAliHn