Android应用AdMob横幅广告运行时不显示问题排查求助
AdMob横幅广告运行时不显示的排查思路
1. 补全AdView初始化代码
你仅声明了AdView mAdView;,但未在代码中绑定布局控件,这是最直接的问题。在MainActivity的onCreate方法中添加初始化代码:
mAdView = findViewById(R.id.adView);
未初始化就调用loadAd会导致空指针或广告根本未加载。
2. 检查依赖与Manifest配置
- 确保Module级
build.gradle中添加了AdMob依赖(使用最新版本号):implementation 'com.google.android.gms:play-services-ads:22.6.0' - 在
AndroidManifest.xml中添加AdMob应用ID(非广告单元ID,测试环境可使用官方测试IDca-app-pub-3940256099942544~3347511713):<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="你的应用ID"/>
3. 添加广告加载回调,排查错误原因
给AdView设置AdListener,获取广告加载失败的具体信息:
mAdView.setAdListener(new AdListener() { @Override public void onAdLoaded() { Log.d("AdMob", "广告加载成功"); } @Override public void onAdFailedToLoad(@NonNull LoadAdError loadAdError) { Log.e("AdMob", "加载失败原因: " + loadAdError.getMessage()); Log.e("AdMob", "错误代码: " + loadAdError.getCode()); } });
常见错误代码对应问题:
- 3:无广告填充(测试环境极少出现,除非测试ID错误)
- 0:网络连接异常
- 1:广告单元ID或应用ID无效
4. 验证设备网络状态
确保模拟器/物理设备网络正常,AdMob需联网加载广告。Android 10+设备需确认已授予网络权限,模拟器需检查是否因代理无法连接AdMob服务器。
5. 配置测试设备
即使使用测试广告单元ID,未标记设备为测试设备也可能出现无填充。在AdRequest中添加测试设备:
AdRequest adRequest = new AdRequest.Builder() .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) // 模拟器默认是测试设备 .addTestDevice("你的物理设备ID") // 可从Logcat日志中获取设备ID .build();
6. 检查布局可见性与尺寸
设计时显示正常不代表运行时布局有效,可在onAdLoaded中打印AdView尺寸:
@Override public void onAdLoaded() { Log.d("AdViewSize", "宽: " + mAdView.getWidth() + " 高: " + mAdView.getHeight()); }
若尺寸为0,检查布局约束是否正确,比如确认app:layout_constraint是否让AdView处于可见区域。
7. 确认AdMob后台配置有效性
若使用自定义测试广告单元,需确认其在AdMob后台已启用,且应用ID与Manifest中配置一致。
内容的提问来源于stack exchange,提问作者Nikita
相关产品推荐
相关产品推荐

