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

集成Google AdMob到Expo项目遇app.json警告及广告显示问题求助

解决Expo中react-native-google-mobile-ads的警告及实体机测试广告不显示问题

一、解决"react-native-google-mobile-ads"配置警告

  • 问题原因:Expo配置规范要求第三方插件的配置项必须嵌套在app.json的expo对象内部,而非根层级。你当前将react-native-google-mobile-ads放在根层级,导致expo-doctor判定为无效配置并抛出警告。
  • 修复步骤:
    1. 打开app.json,将根层级的react-native-google-mobile-ads配置移动到expo.plugins数组中
    2. 正确配置示例:
      {
        "expo": {
          // 其他Expo核心配置(如name、slug等)
          "plugins": [
            [
              "react-native-google-mobile-ads",
              {
                "android_app_id": "ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX"
              }
            ]
          ]
        }
      }
      
    3. 重新运行npx expo-doctor,警告即可消除
  • 警告影响:该警告会导致AdMob的配置无法被正确读取,是实体机广告不显示的潜在诱因之一,但不会直接导致应用崩溃。

二、解决实体Android手机无法显示测试广告的问题

结合模拟器正常、实体机异常的表现,按以下步骤排查:

  • 确认实体机网络状态:测试广告需要稳定的网络连接,建议切换至Wi-Fi或信号良好的移动数据重试
  • 验证测试广告ID:确保使用AdMob官方提供的测试横幅ID(ca-app-pub-3940256099942544/6300978111),不要使用自己的正式广告ID
  • 添加实体机为测试设备:
    1. 安装打包后的APK,通过Logcat日志查找包含Use RequestConfiguration.Builder.setTestDeviceIds()的条目,提取其中的设备ID
    2. 在代码中配置测试设备:
      import { MobileAds } from 'react-native-google-mobile-ads';
      MobileAds().setRequestConfiguration({
        testDeviceIds: ['你的实体机测试ID'],
      });
      
  • 检查权限配置:确保app.json中已添加必要的网络权限:
    {
      "expo": {
        "android": {
          "permissions": ["INTERNET", "ACCESS_NETWORK_STATE"]
        }
      }
    }
    
  • 调整ProGuard规则(若启用):如果打包时开启了ProGuard,需在android/app/proguard-rules.pro中添加规则避免AdMob代码被混淆:
    -keep class com.google.android.gms.ads.** { *; }
    -keep class com.google.android.gms.common.** { *; }
    

内容的提问来源于stack exchange,提问作者Jan van der Heijde

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 05:07:08