You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

测试构建中无法展示正式AdMob广告,但测试广告正常

排查AdMob正式ID在Debug构建不展示广告的问题

嘿,这个问题我之前帮好几个开发者排查过,大概率是这几个容易被忽略的配置点,你挨个检查下应该能解决:

  • Debug构建的签名指纹未添加到AdMob应用配置
    AdMob会校验应用的签名SHA-1来确认应用合法性,你线上的正式应用用的是release签名的SHA-1,但Debug构建用的是Android Studio默认的debug keystore(或者你自定义的debug签名文件)。如果这个Debug版本的SHA-1没加到AdMob对应应用的「应用设置」里,AdMob会拒绝给Debug构建下发广告。
    怎么查Debug的SHA-1?打开Android Studio的Gradle面板,找到你的app模块 → Tasks → android → signingReport,运行后就能在控制台看到Debug版本的SHA-1值,然后去AdMob控制台找到对应的应用,把这个指纹添加进去就行。

  • 未将Debug设备添加到AdMob测试设备列表
    即使是正式广告单元,AdMob默认会对未标记的Debug设备做限制,避免误产生无效点击。你可以在Logcat里搜索「AdMob」,会找到一行类似「Use AdRequest.Builder.addTestDevice("XXX") to get test ads on this device.」的日志,把里面的设备ID复制到AdMob控制台的「设置」→「测试设备」里,添加后Debug设备就能正常加载正式广告了(或者你也可以在代码里用AdRequest.Builder.addTestDevice("设备ID")主动标记,记得上线前移除)。

  • Debug模式下的混淆规则干扰
    虽然你说代码没问题,但有时候Debug构建不小心开启了和Release一样的混淆规则,会把AdMob的核心类给混淆掉,导致广告加载失败。检查你的build.gradle(Module级别)里,Debug构建的minifyEnabled是不是设为false;如果确实需要在Debug模式下开混淆,要确保混淆规则里保留了AdMob的相关类,比如添加:

    -keep class com.google.android.gms.ads.** { *; }
    -keep class com.google.android.gms.common.** { *; }
    
  • 广告单元的定向设置限制
    去AdMob控制台检查这个同组广告单元的定向设置,有没有设置只投放到特定版本、地区、设备类型或者用户群体?比如如果广告单元设置了「仅向正式版本应用投放」,那Debug构建自然拿不到广告。确认所有定向规则都没有排除Debug构建的场景。

先从第一个点开始排查,这是最常见的坑,很多开发者都会忘记把Debug的SHA-1加到AdMob里。

内容的提问来源于stack exchange,提问作者Theo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:34:40