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

Expo 50迁移后Android端react-native-google-mobile-ads启动崩溃

Expo 50迁移后Android APK启动崩溃:Invalid application ID错误

迁移至Expo 50(版本"expo": "~50.0.20")后,所有构建的Android APK启动即崩溃,报错信息如下:

Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException: Invalid application ID

iOS端运行正常,此前该配置已稳定工作多年。当前使用"react-native-google-mobile-ads": "^14.2.5",已单独或组合尝试以下配置方式,但问题仍未解决:

尝试过的配置

1. AndroidManifest.xml手动配置

<meta-data
  android:name="com.google.android.gms.ads.APPLICATION_ID"
  android:value="ca-app-pub-7389480061982385~6737417759"
  tools:replace="android:value"
/>

2. app.config.js多位置配置

module.exports = {
  expo: {
    name: APP-NAME,
    slug: MY-SLUG,
    scheme: MY-SCHEMA,
    version: "2.0.3",
    orientation: "portrait",
    icon: "./assets/icon.png",
    userInterfaceStyle: "light",
    splash: {
      image: "./assets/splash.png",
      resizeMode: "contain",
      backgroundColor: "#ffffff",
    },

    platforms: ["ios", "android", "web"],
    updates: {
      fallbackToCacheTimeout: 0,
    },
    assetBundlePatterns: ["**/*"],
    ios: {
      supportsTablet: true,
      bundleIdentifier: MY-BUNDLE-IDENTIFIER,
      buildNumber: "1.0.0",
    },
    android: {
      package: MY-PACKAGE,
      googleServicesFile:
        process.env.GOOGLE_SERVICES_JSON ?? "/android/app/google-services.json",
      versionCode: 58,
      permissions: [],
      playStoreUrl:
        "https://play.google.com/store/apps/details?id=MY-APP",
      adaptiveIcon: {
        foregroundImage: "./assets/icon.png",
        backgroundColor: "#FFFFFF",
      },
      config: {
         googleMobileAdsAppId: "ca-app-pub-MY~KEY",
      },
    },
    web: {
      favicon: "./assets/favicon.png",
    },
    extra: {
      "react-native-google-mobile-ads": {
        android_app_id: "ca-app-pub-MY~KEY",
        ios_app_id: "ca-app-pub-MY~KEY",
      },
      eas: {
        projectId: MY-PROJECT-ID,
      },
    },
    plugins: [
      [
        "react-native-google-mobile-ads",
        {
          android_app_id: "ca-app-pub-MY~KEY",
          ios_app_id: "ca-app-pub-MY~KEY",
        },
      ],
    ],
  },
  "react-native-google-mobile-ads": {
    android_app_id: "ca-app-pub-MY~KEY",
    ios_app_id: "ca-app-pub-MY~KEY",
  },
};

解决步骤

1. 校验AdMob应用ID格式

确认你的Android应用ID严格符合ca-app-pub-XXXXXXXXXXXXXXXX~YYYYYYYYYY格式,核对AdMob后台的应用ID,确保没有拼写错误(尤其是~符号前后的数字)。

2. 精简配置,统一插件注入

Expo 50与react-native-google-mobile-ads v14+适配时,推荐仅保留插件配置,移除所有冗余手动配置:

  • 删除AndroidManifest.xml中的meta-data配置项,插件会自动完成注入
  • 移除app.config.js中android.config.googleMobileAdsAppId、extra内的react-native-google-mobile-ads配置块,以及文件最外层的同名配置块
  • 仅保留plugins数组内的配置,示例:
    plugins: [
      [
        "react-native-google-mobile-ads",
        {
          android_app_id: "你的正确AdMob应用ID",
          ios_app_id: "你的iOS应用ID",
        },
      ],
    ],
    

3. 排查google-services.json冲突

如果google-services.json中包含ADMOB_APP_ID字段,可能会覆盖插件配置:

  • 检查该文件内的应用ID是否正确
  • 可暂时注释android.googleServicesFile配置,测试是否由该文件导致冲突

4. 清理构建缓存

执行以下命令清除旧配置残留:

npx expo prebuild --clean
rm -rf android/.gradle
rm -rf node_modules && npm install

5. 验证配置注入结果

运行npx expo config --type android查看最终生成的Android配置,确认com.google.android.gms.ads.APPLICATION_ID已正确注入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:49:56