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




