Flutter中AdMob测试设备ID在Logcat中找不到,如何获取?
解决Flutter AdMob无法获取测试设备ID的问题
一、先明确:你的模拟器已被识别为测试设备
从你提供的日志I/Ads (29143): This request is sent from a test device.可以看出,Google Ads已自动将模拟器标记为测试设备——此时即使不手动指定testDeviceIds,使用官方测试广告单元ID(比如你代码里的ca-app-pub-3940256099942544/6300978111)也会返回测试广告,不会触发真实计费。
二、找到Logcat中的测试设备ID
如果一定要获取具体ID,按以下步骤操作:
- 打开Android Studio的Logcat面板,在搜索框中输入**
test device,或直接过滤标签Ads**,避免全局搜索被无关日志淹没。 - 运行应用并触发广告加载(比如调用你的
_loadBannerAd方法),此时Logcat会输出类似日志:
其中的字符串就是你的测试设备ID。I/Ads: Use AdRequest.Builder.addTestDevice("ABCDE12345...") to get test ads on this device.
三、修复TEST_EMULATOR配置不生效的问题
你之前的TEST_EMULATOR配置需要注意初始化顺序,正确写法如下:
void main() async { WidgetsFlutterBinding.ensureInitialized(); // 先更新请求配置 await MobileAds.instance.updateRequestConfiguration( RequestConfiguration(testDeviceIds: ['TEST_EMULATOR']), ); // 再初始化MobileAds await MobileAds.instance.initialize(); runApp(const MyApp()); }
确保配置更新完成后再加载广告,避免时序问题导致配置未生效。
四、手动获取模拟器测试设备ID
如果Logcat始终无法输出,可通过以下方式手动获取:
- 方法1:在Android模拟器中,进入设置 > 关于手机 > 状态信息 > Android ID,复制该字符串作为测试设备ID。
- 方法2:使用adb命令获取:
执行后返回的字符串即为测试设备ID,将其添加到adb shell settings get secure android_idtestDeviceIds数组即可。
五、排查广告加载的其他潜在问题
从代码看你的广告单元ID是官方测试ID,若广告仍未加载,可检查:
- 确保模拟器的Google Play服务为最新版本,旧版本可能存在Ads服务兼容性问题。
- 检查
AndroidManifest.xml是否添加了AdMob所需权限和元数据:<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <application> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-3940256099942544~3347511713"/> <!-- 官方测试APP ID --> </application>
内容的提问来源于stack exchange,提问作者Johan
相关产品推荐
相关产品推荐

