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
相关产品推荐
相关产品推荐

