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

Expo EAS构建因react-native-google-mobile-ads失败求助

解决react-native-google-mobile-ads在Expo EAS托管构建中的AndroidManifest冲突问题

问题原因

构建报错是因为com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT这个meta-data存在值冲突:你的项目AndroidManifest中设为true,而react-native-google-mobile-ads库的Manifest中设为false,导致构建时Manifest合并失败。

解决步骤(Expo托管工作流)

托管工作流无法直接修改本地原生文件,所有配置需通过app.json或app.config.js完成:

  1. 给AndroidManifest添加tools命名空间
    在app.json的expo.android.androidManifest下,为manifest节点补充xmlns:tools属性:
{
  "expo": {
    "android": {
      "androidManifest": {
        "manifest": {
          "xmlns:tools": "http://schemas.android.com/tools"
        }
      }
    }
  }
}
  1. 覆盖冲突的meta-data配置
    在expo.android.androidManifest.application.metaData中添加(或修改)对应meta-data元素,通过tools:replace强制覆盖冲突值:
{
  "expo": {
    "android": {
      "androidManifest": {
        "application": {
          "metaData": [
            {
              "name": "com.google.android.gms.ads.DELAY_APP_MEASUREMENT_INIT",
              "value": "true", // 可根据需求设为true或false,建议和原项目配置保持一致
              "tools:replace": "android:value"
            }
          ]
        }
      }
    },
    "...": "保留原有其他配置"
  },
  "react-native-google-mobile-ads": {
    "android_app_id": "ca-app-pub-************~**********",
    "ios_app_id": "ca-app-pub-***********/**********"
  }
}
  1. 清理残留依赖(可选)
    如果项目还残留expo-admob依赖,先卸载并清理缓存:
npm uninstall expo-admob
npm cache clean --force
npm install
  1. 重新触发EAS构建
    提交配置修改后,重新运行构建命令:
eas build --platform android

说明

tools:replace="android:value"的作用是告知Android构建工具,当该meta-data出现值冲突时,优先使用当前配置中的值覆盖库提供的默认值,以此解决Manifest合并冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:40:30