java - Google AdMob AdView 始终为空白
问题描述
我正在尝试让 AdMob 广告在 Android 应用程序中运行,但无论我尝试什么,AdView 似乎总是空白,无论它是测试广告还是我尝试展示的真实广告,以及它是否显示在虚拟设备或物理设备。
我现在创建了一个空白项目并尝试直接复制Google 教程,但仍然没有成功。我仍在使用教程中的示例 ID,但使用我自己的 ID 时结果仍然相同。
我在项目级别 build.gradle 中添加了以下内容:
allprojects {
repositories {
google()
jcenter()
}
}
我的应用程序级别 build.gradle 出现错误,但我几乎找不到有关导致它的原因或如何修复它的信息。关于我发现的唯一信息是一条告诉 Android Studio 停止报告错误的行。我的应用程序级别 build.gradle 中有以下内容:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.google.android.gms:play-services-ads:17.2.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
错误发生在第二个“实施”行,是:
All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 28.0.0, 26.1.0. Examples include com.android.support:animated-vector-drawable:28.0.0 and com.android.support:customtabs:26.1.0
除此之外,代码中似乎没有任何其他错误。
我已将 AdView 添加到 activity_main.xml,如下所示:
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:id="@+id/adView"
android:layout_width="1000px"
android:layout_height="500px"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="ca-app-pub-3940256099942544~3347511713">
</com.google.android.gms.ads.AdView>
我也切换到使用 RelativeLayout,因为这是教程中使用的。
然后,我使用以下 Java 来(希望)请求广告。
package com.jakecharman.myapplication;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
public class MainActivity extends AppCompatActivity {
private AdView mAdView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713
MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");
mAdView = findViewById(R.id.adView);
AdRequest adRequest = new
mAdView.loadAd(adRequest);
}
}
当我在虚拟设备上运行应用程序时,它按预期运行,但 AdView 不可见。我在日志中发现了一些错误,但我无法在网上找到很多有用的信息:
E/Ads: Google Mobile Ads SDK initialization functionality unavailable for this session. Ad requests can be made at any time.
I/Ads: This request is sent from a test device.
I/Ads: Ad failed to load : 0
W/cr_ChildProcessConn: onServiceDisconnected (crash or killed by oom): pid=15347
我也得到:
W/Ads: Invoke Firebase method getInstance error.
W/Ads: The Google Mobile Ads SDK will not integrate with Firebase. Admob/Firebase integration requires the latest Firebase SDK jar, but Firebase SDK is either missing or out of date
但据我了解,这很好,因为我不想使用 Firebase?
对此的任何帮助将不胜感激,这是我第一次正确尝试为 Android 编写任何东西,这是阻碍我的最后一个问题。
解决方案
build.gradle
确保您已在应用级别文件中将 admob gradle 依赖项添加到您的项目中。这可以通过 2 种方式完成,或者直接添加 play-services-ads
implementation 'com.google.firebase:firebase-ads:18.2.0'
或者,如果您已经在使用(或计划使用)firebase ,请添加 firebase-ads library。
implementation 'com.google.android.gms:play-services-ads:18.2.0'
play-services-ads
使用的好处minSdkVersion
是 14,而firebase-ads
实现需要minSdkVersion
16。
为了解决这些依赖关系,您还需要将google()
存储库添加到您的项目级build.gradle
文件中。我在您的示例代码中看到了您所做的,所以我不会在这里重复该部分。
从这些库的 17.0.0 版本开始,您需要在AndroidManifest.xml
项目文件中添加 Admob ApplicationId。
<application
...>
<!-- meta data -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="@string/cAppId" />
</application>
作为最后一步,使用该Admob.initialize()
方法在应用程序启动时的某个地方初始化项目中的 admob。在我看到的你的例子中也是如此。
推荐阅读
- gitlab - 在 openshift 项目中看不到 gitlab-runner 模板
- android - Fabric 的“Answers Custom Event”在关闭应用程序之前不起作用 - Android
- macos - 为 UInt32_t 运行 MPSImageIntegral
- angular - 如何在角度 6 中调用新的 Http 请求之前取消所有待处理的 Http 请求
- android - 需要在我的应用中实现“通话结束”功能
- excel - 从另一个保持链接的工作簿中获取价值
- python - 如何提高 lstm 训练的准确性
- java - 执行非本地 MacOS 终端命令 - 截断以创建新文件 - 在 Java 代码中
- android - 如何在单个表格行中添加两个图像
- c# - 如何在 MVC 中为两因素身份验证电子邮件设置模板