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




В 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. *
******************************************************************************
Обратитесь к этому связь, чтобы узнать, как узнать идентификатор приложения и идентификатор рекламного блока для вашего объявления в приложении.
Я столкнулся с той же проблемой, изо всех сил пытаясь понять приведенный выше ответ, затем я попробовал несколько ударов и попыток, и это сработало, позже я понял приведенный выше ответ. Поэтому я использую свои наблюдения и опыт графического представления, чтобы упростить интеграцию.
Шаги, которые необходимо выполнить:
AdMob Если у вас ее нет (https://apps.admob.com/signup/)Image - 1
Image - 2
Image - 3
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 (приложение) (недостаточно только динамического манифеста).
AppID можно найти в пользовательском интерфейсе AdMob, приложения=>выберите свое приложение=>Настройки приложения=>AppID