AdMob Banner广告无法显示问题求助(附项目相关代码)
你遇到的这个情况其实挺常见的——测试ID在空白Activity能正常跑,换成自己的正式ID就没广告,还没编译错误,咱们一步步来拆解问题、解决它:
一、先确认广告单元与应用ID的有效性
首先得排除最基础的配置错误:
- 核对AdMob后台的应用ID和你Manifest里的
ca-app-pub-5591413578175283~3345461526,确保字符完全一致,没有多打、少打或者拼写错误 - 检查你的Banner广告单元ID
ca-app-pub-5591413578175283/1605004449:要保证它是在AdMob后台针对Banner类型创建的,而且状态是「活跃」的。另外,新创建的广告单元通常需要1-24小时才能开始返回广告,刚创建的话可以先等一等再测试
二、调整AdMob初始化与广告加载的时机
看你的MainActivity代码,存在一个小问题:你先new了一个没用的AdView,而且广告加载是在初始化回调外面做的,这可能导致广告请求在AdMob SDK初始化完成前就发出去了。修改一下:
// 删掉这段没用的代码:AdView adView = new AdView(this); mAdView = findViewById(R.id.admon); // 初始化完成后再加载广告 MobileAds.initialize(this, new OnInitializationCompleteListener() { @Override public void onInitializationComplete(InitializationStatus initializationStatus) { AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); } });
三、修复布局的显示空间问题
你的AdView被放在LinearLayout里,下面的ConstraintLayout设置了match_parent的高度,很可能把AdView的显示空间挤没了。调整布局:
- 把AdView的宽度改成
match_parent,适配不同屏幕:
<com.google.android.gms.ads.AdView android:id="@+id/admon" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" app:adSize="BANNER" app:adUnitId="ca-app-pub-5591413578175283/1605004449"> </com.google.android.gms.ads.AdView>
- 给下面的ConstraintLayout添加
android:layout_weight="1",让它占据LinearLayout的剩余空间,保证AdView有足够的显示区域:
<androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> <!-- 内部控件保持不变 --> </androidx.constraintlayout.widget.ConstraintLayout>
四、排查正式广告的显示条件
测试ID是Google提供的专用测试广告,正式广告需要满足几个条件才会显示:
- 确保你的应用没有违反AdMob的政策(比如内容合规、没有模拟点击等行为)
- 如果是测试阶段,建议在AdMob后台添加你的测试设备ID,用测试设备请求广告,避免误触发广告限制
- 正式广告需要真实的用户流量,测试时可以多切换几次页面或者重启应用尝试加载
五、通过日志定位具体问题
如果上面的步骤都试过还是不行,打开Android Studio的Logcat,过滤Ads标签,查看广告加载的详细日志:
- 比如
Ad failed to load: 3代表无填充(可能是广告单元刚创建、流量不足或者地区无广告) Ad failed to load: 0代表内部错误,需要检查SDK版本、配置是否正确- 还能看到权限、初始化相关的警告,帮你快速定位问题
按照上面的步骤排查下来,应该能解决广告不显示的问题啦!
内容的提问来源于stack exchange,提问作者James Jones
相关产品推荐
相关产品推荐

