Android 8.1 Не удалось получить провайдера com.google.android.gms.ads.MobileAds!!! апк сбой

Моя версия Android Studio 3.4.1, я пытаюсь добавить код MobileAds в свой проект, созданный с помощью SDK 28, но получаю отчет о сбое. не знаю почему????

Я проверил все похожие сообщения, но некоторые из них устарели и, к сожалению, не смогли найти решения.

Мой манифест Android

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

Макет основной деятельности

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

Сборка приложения.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);
}
}

Но все равно вылетает ОШИБКА. Подробная информация об ошибке logcat здесь

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

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
2 548
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

В Admob есть 2 рекламных идентификатора.

1). идентификатор приложения

2). идентификатор рекламного блока

Для приложения, какой бы тип рекламы вы ни использовали, идентификатор приложения одинаков. Но идентификатор рекламного блока различается для каждого используемого вами типа рекламы. Например, в приложении могут быть как баннеры, так и межстраничные объявления. Для обоих этих типов объявлений идентификатор приложения одинаков, но идентификатор рекламного блока отличается.

Согласно вашему коду, вы везде использовали один и тот же идентификатор, что неверно. Вам нужно использовать идентификатор приложения, идентификатор рекламного блока в соответствующих местах. В макете xml, где вы объявляете рекламный блок, он должен иметь идентификатор рекламного блока, а в других местах идентификатор приложения.

Манифест.xml

<meta-data
    android:name = "com.google.android.gms.ads.APPLICATION_ID"
    android:value=**appID**/>

Макет основной деятельности

<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=**adUnitID**>

HomeActivity.java

MobileAds.initialize(this, **appID**);

Итак, в вашем случае кажется, что вы использовали идентификатор рекламного блока для мест, где вы должны были использовать идентификатор приложения. Вероятно, поэтому он выдает ошибку, как в

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

Обратитесь к этому связь, чтобы узнать, как узнать идентификатор приложения и идентификатор рекламного блока для вашего объявления в приложении.

AppID можно найти в пользовательском интерфейсе AdMob, приложения=>выберите свое приложение=>Настройки приложения=>AppID

jkr 26.01.2021 18:34

Я столкнулся с той же проблемой, изо всех сил пытаясь понять приведенный выше ответ, затем я попробовал несколько ударов и попыток, и это сработало, позже я понял приведенный выше ответ. Поэтому я использую свои наблюдения и опыт графического представления, чтобы упростить интеграцию.

Шаги, которые необходимо выполнить:

  • Создайте учетную запись AdMob Если у вас ее нет (https://apps.admob.com/signup/)
  • Создайте приложение, перейдя на левую панель и предоставив требуемые данные, которые там запрашиваются (См. изображение – 1)

Image - 1

  • Как только запрашиваемые данные будут предоставлены, вы увидите экран, подобный приведенному в Изображение - 2.

Image - 2

  • Затем вы можете добавить «Рекламный блок» или нажать «Готово». (Если вы нажмете «Готово», вы будете перенаправлены на страницу AppOverview, где вы можете добавить «Рекламный блок»).
  • Теперь нажмите «Приложение» -> «Просмотреть все приложения» (снова См. Изображение -1, чтобы увидеть вариант)
  • Затем вы будете перенаправлены на страницу, где будет показана вся информация о приложениях (См. изображение – 3)

Image - 3

  • Нажмите на показанный там AppId, это ваш идентификатор приложения. Скопируйте это и вставьте в файл манифеста в строку значения, как показано ниже, вы также можете сослаться на Изображение -4

Image -4

           <meta-data
            android:name = "com.google.android.gms.ads.APPLICATION_ID"
            android:value = "ca-app-pub-8623492450664484~4654380864">
  • Затем перейдите к файлу Activity.xml (куда вы добавили баннер Ad Mob) и добавьте "Ad Unit Id", как показано ниже.

            <com.google.android.gms.ads.AdView
             android:id = "@+id/adView"
             android:layout_width = "416dp"
             android:layout_height = "52dp"
             android:layout_alignParentBottom = "true"
             android:layout_centerHorizontal = "true"
             ads:adSize = "BANNER"
             ads:adUnitId = "ca-app-pub-3940256099942544/6300978111"
             tools:ignore = "MissingConstraints" />
    

Если вы хотите протестировать, используйте «AdUnitId», как указано ниже (предложено в документе разработчика AdMob).

ca-app-pub-3940256099942544/6300978111

Затем добавьте следующие две строки в соответствующее действие (файл Kotlin)

    val adRequest = AdRequest.Builder().build()
    mAdView?.loadAd(adRequest)

Теперь запустите приложение, вы увидите рекламный баннер. Надеюсь, это будет полезно

Не ответ для вас, но может помочь другим:

Модули динамических функций вызывают проблемы, если вы не включаете зависимость в базовый файл build.gradle (приложение) (недостаточно только динамического манифеста).

Другие вопросы по теме