Не удалось получить провайдер 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>

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

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

Ответ 1

Google предоставил обновление для объявлений Google, поэтому, если вы обновите библиотеку 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>

Ответ 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 → Выбрать приложение → Настройки приложения → Идентификатор приложения.

Вы можете прочитать больше здесь объявлений-разработчиков.

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

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

Ответ 3

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

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

Ответ 4

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

Ответ 5

Проблема исправлена. Я использовал неверный идентификатор AdUnit. Ему нужен реальный идентификатор приложения из Google AddMob: Google AdMob → Выберите приложение → Настройки приложения → Идентификатор приложения!

Ответ 6

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>

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

Ответ 8

У меня такая же проблема

AndroidManifest.xml является

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

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

    <activity
        android:name="com.google.android.gms.ads.AdActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
        android:screenOrientation="portrait" />

MainActivity Layout - это

 <com.google.android.gms.ads.AdView
    android:id="@+id/adView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_gravity="bottom"
    android:layout_weight="1"
    ads:adSize="SMART_BANNER"
    ads:adUnitId="ca-app-pub-3940256099942544/6300978111">

</com.google.android.gms.ads.AdView>

мое приложение build.gradle

android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
defaultConfig {
minSdkVersion 19
targetSdkVersion 28
multiDexEnabled true
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
repositories {
    jcenter()
    mavenCentral()  // GPUImage for Android
}
dexOptions {
    javaMaxHeapSize "4g"
}
productFlavors {
}
} 
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation files('libs/acra-4.5.0.jar')
implementation files('libs/ormlite-android-4.43.jar')
implementation files('libs/ormlite-core-4.43.jar')
// If you want to use the GPU Filters
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.google.firebase:firebase-ads:17.2.1'
implementation 'com.google.firebase:firebase-messaging:18.0.0'
implementation 'com.loopj.android:android-async-http:1.4.9'
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'jp.wasabeef:glide-transformations:2.0.1'
implementation 'com.onesignal:OneSignal:3.10.9'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:customtabs:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.google.android.gms:play-services-ads:17.2.1'
implementation 'com.google.android.gms:play-services-maps:+'

}
apply plugin: 'com.google.gms.google-services'

Мой HomeActivity.java похож на

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_new);
    MobileAds.initialize(this, "ca-app-pub-3940256099942544/6300978111");

    AdView mAdView = (AdView) findViewById(R.id.adView);
    try{

        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);

        if (admov_status.equalsIgnoreCase("true")){
            mAdView.setVisibility(View.VISIBLE);
        }else if(admov_status.equalsIgnoreCase("false")) {
            mAdView.setVisibility(View.GONE);
        }
    }catch (RuntimeException e){
        mAdView.setVisibility(View.GONE);
    }

}

Но все равно ОШИБКА работает....

java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException: 

******************************************************************************
* Invalid application ID. Follow instructions here: Link to *
* find your app ID.                                                          *
******************************************************************************


    at android.app.ActivityThread.installProvider(ActivityThread.java:6242)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:5805)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5722)
    at android.app.ActivityThread.-wrap1(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
 Caused by: java.lang.IllegalStateException: 

******************************************************************************
* Invalid application ID. Follow instructions here: Link to *
* find your app ID.                                                          *
******************************************************************************


    at com.google.android.gms.internal.ads.zzabh.attachInfo(Unknown Source:19)
    at com.google.android.gms.ads.MobileAdsInitProvider.attachInfo(Unknown Source:3)
    at android.app.ActivityThread.installProvider(ActivityThread.java:6239)
        ... 10 more

Может кто-нибудь помочь мне разобраться в проблеме, пожалуйста.

Ответ 9

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

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

Ответ 10

Важное замечание: Этот шаг требуется для Google Mobile Ads SDK версии 17.0.0. Невозможность добавить этот тег приводит к сбою с сообщением: Google Mobile Ads SDK был инициализирован неправильно.

<manifest>
    <application>
        <!-- Sample AdMob App ID: ca-app-pub-3940256099942544~3347511713 -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>