为何OneSignalNotificationServiceExtension导致Expo项目构建报错?
Expo + OneSignal EAS构建报错解决
报错原因
这个警告本质是OneSignalNotificationServiceExtension被同时添加到了Xcode项目的两个分组(Pods和空根分组)里,Xcode判定项目结构存在问题,虽然提示是warning,但会干扰EAS的正常构建流程。
大概率是onesignal-expo-plugin自动配置项目时出现了重复引用,常见于插件和核心库版本适配问题,或者之前构建残留了旧的配置文件导致冲突。
解决方法
方案1:彻底清理后重新安装配置
- 先卸载两个OneSignal相关库:
npm uninstall onesignal-expo-plugin react-native-onesignal # 用yarn的话执行:yarn remove onesignal-expo-plugin react-native-onesignal - 清除Expo的原生项目缓存:
npx expo prebuild --clean - 重新安装指定版本的库:
npm install onesignal-expo-plugin@2.0.2 react-native-onesignal@5.0.2 # yarn用户执行:yarn add onesignal-expo-plugin@2.0.2 react-native-onesignal@5.0.2 - 重新生成原生项目文件:
npx expo prebuild - 重新触发EAS构建即可。
方案2:手动修复Xcode项目结构
如果自动清理没效果,直接改Xcode配置:
- 打开iOS项目的
xcworkspace文件(路径:ios/[你的项目名称].xcworkspace) - 在左侧导航栏找到
OneSignalNotificationServiceExtension,查看它的分组归属 - 如果它同时出现在
Pods组和根分组里,右键点击其中一个重复的引用,选择Remove Reference(注意别选Delete,只是移除引用,不是删除文件) - 确保这个扩展只属于根项目分组,而非Pods组
- 保存项目后重新跑EAS构建。
方案3:检查插件配置是否重复
打开app.json或app.config.js,确认onesignal-expo-plugin只配置了一次,不要重复添加:
{ "expo": { "plugins": [ [ "onesignal-expo-plugin", { "mode": "development" // 根据你的环境改成production } ] ] } }
内容的提问来源于stack exchange,提问作者Ripas55
相关产品推荐
相关产品推荐

