无法获取提供程序 com.google.android.gms.ads.MobileAdsInitProvider:java.lang.IllegalStateException

新手上路,请多包涵

我将我的 Android Studio (3.2.1) 及其 sdk 更新到最新版本。之后,它需要通过添加以下标签来手动更新 Manifest:

 <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

有人可以告诉我为什么会发生或帮助我解决它吗?我试图用谷歌搜索这个问题,但没有解决方案。这似乎是一个新的尚未解决的问题。提前谢谢了。

原文由 Mark Delphi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

这是因为更新了 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 之前使用测试广告,请从这里 developers.google 检查 AdMob 测试 id。

希望这会帮助你。谢谢 :)

原文由 Saveen 发布,翻译遵循 CC BY-SA 4.0 许可协议

注意:如果您将 ID 存储在 strings.xml 文件中,请按此操作

在 Manifest.xml 中:

 <application>
           <!-- some code here -->
            <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="@string/admobID" />
           <!-- some code here -->
 </application>

在strings.xml 中:

  <!-- change it with your ID -->
       <string name="admobID" translatable="false">ca-app-pub-
                       xxxxxxxxx~xxxxxxxxx</string>

示例:如果您忘记将 @ 添加到 string/admobID 将导致相同的异常

原文由 devio 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题