Не удалось получить поставщика com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException: почему? - PullRequest
0 голосов
/ 13 октября 2018

Я обновляю свою 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>

, в результате чего вместо идентификатора приложения я поставил реальный идентификатор своего приложения.Значение также было изменено на правильный идентификатор рекламного блока, как показано здесь 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

Может ли кто-нибудь сказать мне, почему это происходит, или помочь мне решить эту проблему?Я пытался погуглить вопрос, но нет никаких решений.Кажется, это новая, еще нерешенная проблема.Большое спасибо заранее.

Ответы [ 6 ]

0 голосов
/ 17 августа 2019

В Unity3D, начиная с V3.18 и Ad SDK V 7.45.0, вам необходимо настроить эти данные @ Меню: Активы> Google Mobile Ads> Настройки, и они автоматически запишут эти данные в файл манифеста.

Добавление APPLICATION_ID & AD_MANAGER_APP в файл манифеста напрямую, который уже указан в других ответах, все еще не давало мне результата.

0 голосов
/ 07 апреля 2019

Google Mobile Ads SDK v17.0.0 для Android только что выпущен, и в него включены эти важные изменения.

Обязательные изменения AndroidManifest.xml

Начиная сверсии 17.0.0, если вы являетесь издателем AdMob, теперь вам необходимо добавить идентификатор приложения AdMob в файл AndroidManifest.xml.Когда вы найдете свой идентификатор приложения AdMob в интерфейсе AdMob, добавьте его в манифест, добавив следующий тег:

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

Что если я использую Менеджер объявлений Google вместо AdMob?

Издатели, использующие Менеджер объявлений Google, должны объявить себя приложением Менеджера объявлений сдругой тег, чтобы избежать такого же сбоя:

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

См. ссылку для получения более подробной информации.

0 голосов
/ 29 декабря 2018

Добавить в свой файл манифеста

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

0 голосов
/ 26 октября 2018

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>
0 голосов
/ 13 октября 2018

Это произошло из-за обновленного AdMob SDK.Теперь вам нужно добавить appID в ваш файл манифеста.

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

Вы можете получить appID здесь -> Google addmob -> Выбрать приложение -> Настройки приложения -> Идентификатор приложения.

Подробнее вы можете прочитать здесь ads-developers .

Если вы хотите использовать тестовые объявления перед размещением собственного идентификатора, проверьте тестовые идентификаторы AdMob здесь developers.google .

Надеюсь, это поможет вам.Спасибо:)

0 голосов
/ 13 октября 2018

Я думаю, что имя должно быть "APPLICATION_ID", а не "APP_ID"

...