AdMob测试广告不显示,报错ERROR_CODE_NO_FILL问题咨询
问题排查与解决方案
ERROR_CODE_NO_FILL代表广告请求已成功发送到AdMob服务器,但服务器没有匹配的广告资源返回。由于你新建项目可正常加载测试广告,仅已上架的存量应用加载失败,可按以下优先级排查:
- 核对AdMob后台应用配置:确认存量应用的包名、签名文件SHA1值已正确录入AdMob控制台对应应用的配置项中。新建项目使用的包名、测试签名和存量应用不一致,这是最常见的测试广告仅在旧项目加载失败的原因。
- 检查混淆配置:存量上架应用通常会开启ProGuard/R8代码混淆,需在proguard-rules.pro中添加AdMob专属防混淆规则,避免SDK相关类被误删导致请求异常:
-keep class com.google.android.gms.ads.** { *; } -keep class com.google.ads.** { *; } -dontwarn com.google.android.gms.ads.**
- 校验AdMob初始化逻辑:你同时在代码onCreate方法中调用
MobileAds.initialize(),又在AndroidManifest中配置了APPLICATION_ID元数据,19.4.0版本的AdMob SDK存在重复初始化导致请求异常的已知问题,可先删除代码中的手动初始化语句,仅保留Manifest配置后重试。 - 检查AdMob账号状态:登录AdMob后台进入政策中心,确认对应应用无违规限制记录。已上架应用如果之前有流量异常、违规投放的记录,即使接入测试ID也可能被限制返回广告填充。
- 校验targetSdkVersion配置:play-services-ads:19.4.0要求应用targetSdkVersion不低于29,若存量应用targetSdkVersion低于该要求,也会触发广告加载异常。
快速验证方法
将存量项目的包名临时修改为可正常加载广告的新建项目的包名,使用测试签名打包运行,若此时广告可正常加载,即可确认是包名、签名与AdMob后台配置不匹配导致的问题,更新后台配置即可解决。
内容的提问来源于stack exchange,提问作者İsa C.
相关产品推荐
相关产品推荐

