You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

AdMob测试广告在Android应用发布版本失效问题求助

问题原因拆解

这个坑我之前也踩过,核心问题其实出在Google Play的应用重签名机制上:

  • 你在Debug版里配置的测试设备ID,是和本地签名的应用绑定的。但上传APK到Play商店后,Google会用自家的签名密钥重新给应用签名,此时应用的签名哈希值发生变化,而AdMob识别测试设备的逻辑是「应用签名+设备ID」绑定的,所以原来的测试ID直接失效了。
  • 另外,发布版构建默认会关闭AdMob的调试模式,AdMob自动切换到正式广告流,双重因素叠加就导致你看到了无标识的正式广告。
解决办法

按下面的步骤来就能搞定:

  • 步骤1:获取Play商店版本对应的测试设备ID
    把Play商店的应用安装到你的测试设备上,用adb连接设备后打开Logcat,过滤关键词 AdMob 或者 test device,你会看到类似这样的日志:

    I/Ads: Use RequestConfiguration.Builder().setTestDeviceIds(Arrays.asList("ABCDE12345-XXXXXXXXX-XXXXXXXX"))
    把引号里的那串ID复制下来,这就是适配Play签名的测试设备ID。

  • 步骤2:更新代码里的测试设备ID配置
    在AdMob的请求配置中同时加入旧的Debug测试ID和新的Play签名测试ID,比如:
    val configuration = RequestConfiguration.Builder()
        .setTestDeviceIds(listOf("你的旧Debug测试ID", "新的Play签名测试ID"))
        .build()
    MobileAds.setRequestConfiguration(configuration)
    
    不用担心多ID的冲突,AdMob会自动匹配当前应用签名对应的设备ID,完全不影响正式环境的广告展示。
  • 备选方案:用AdMob官方测试单元ID
    如果只是想验证发布版的广告展示逻辑,直接用AdMob提供的官方测试单元ID更省心,比如:
    • 横幅广告:ca-app-pub-3940256099942544/6300978111
    • 插屏广告:ca-app-pub-3940256099942544/1033173712
      这些测试ID不管什么环境、什么签名,都会稳定展示带标识的测试广告,还能避免误触正式广告的风险。
  • 额外检查:AdMob后台配置
    也可以登录AdMob后台,找到你的应用,在「测试设备」里手动添加新获取的测试ID,注意要和Play商店的应用包名对应上,这样也能生效。

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

火山引擎 最新活动