Expo托管项目集成react-native-google-mobile-ads iOS构建失败求助
解决Expo托管工作流iOS构建react-native-google-mobile-ads配置报错问题
问题根源
报错本质是EAS构建缓存残留了旧配置信息,导致fastlane阶段无法读取到app.json中已正确设置的ios_app_id字段。新项目能正常构建,正是因为没有历史缓存干扰。
修复步骤
1. 清除本地Expo缓存
在项目本地目录执行以下命令,清理本地缓存:
expo cache:clear
或者重启项目时强制清除:
expo r -c
2. 强制EAS构建跳过远程缓存
提交代码后,执行构建命令时添加--clear-cache参数,让EAS重新拉取依赖、生成Pod配置:
eas build --platform ios --clear-cache
3. 验证配置层级(可选)
确认react-native-google-mobile-ads配置直接位于expo字段下,避免嵌套错误:
{ "expo": { "name": "YourApp", "slug": "your-app", // 其他项目配置... "react-native-google-mobile-ads": { "android_app_id": "ca-app-pub-xxx", "ios_app_id": "ca-app-pub-xxx", "user_tracking_usage_description": "This identifier will be used to deliver personalized ads to you." } } }
如果使用app.config.js而非app.json,需确保该文件中同步了相同的广告配置。
4. 构建钩子清理Pods(极端情况)
若上述步骤无效,可通过EAS构建钩子手动清理iOS Pods:
- 在项目根目录创建
eas-build-pre-install.sh文件:#!/bin/bash if [ "$PLATFORM" = "ios" ]; then cd ios pod deintegrate pod clean rm -rf Podfile.lock fi - 在
eas.json的对应构建配置中添加钩子:{ "build": { "production": { "ios": { "preInstallCommand": "./eas-build-pre-install.sh" } } } }
内容的提问来源于stack exchange,提问作者Arham
相关产品推荐
相关产品推荐

