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

React Native iOS应用OneSignalExtension.framework重复生成错误求助

React Native iOS:OneSignal 相关编译错误解决指南

问题描述

在使用 Xcode 15.1、OneSignal 4.5.1 的 React Native iOS 应用中,遇到以下编译错误:

Multiple commands produce '/Users/hamzabakaran/Library/Developer/Xcode/DerivedData/mobile-ctpnuulbuipfykbyqdihvziwoxdf/Build/Products/Debug-iphonesimulator/AppName.app/Frameworks/OneSignalExtension.framework'

Target 'mobile' (project 'mobile') has copy command from '/Users/hamzabakaran/Documents/Projects/app/app-mobile/ios/Pods/OneSignalXCFramework/iOS_SDK/OneSignalSDK/OneSignal_Extension/OneSignalExtension.xcframework/ios-arm64_i386_x86_64-simulator/OneSignalExtension.framework' to '/Users/hamzabakaran/Library/Developer/Xcode/DerivedData/mobile-ctpnuulbuipfykbyqdihvziwoxdf/Build/Products/Debug-iphonesimulator/AppName.app/Frameworks/OneSignalExtension.framework'

尝试切换到 OneSignal 4.5.0 并移除 Embed Frameworks 中的 OneSignalExtension.xcframework 后,又出现新错误:

/Users/hamzabakaran/Documents/Projects/app/app-mobile/ios/Pods/boost/boost/container_hash/hash.hpp:131:33 No template named 'unary_function' in namespace 'std'; did you mean '__unary_function'?

解决方案

一、修复 OneSignal 4.5.1 的「Multiple commands produce」错误

该错误源于 OneSignalExtension.framework 被重复引用或错误嵌入到主 target:

    1. 检查并修正 Podfile 配置
      打开 ios/Podfile,确认没有重复添加 OneSignalXCFramework 的引用,确保 Notification Service Extension target 的配置正确(仅扩展target引用OneSignalExtension)。执行以下命令清理并重装Pods:
    pod deintegrate && pod install
    
    1. 调整 Xcode 的 Embed Frameworks 设置
      打开 Xcode 项目,选中主 target(mobile),进入 Build Phases → Embed Frameworks,移除其中的 OneSignalExtension.framework——该框架仅属于 Notification Service Extension target,主应用target无需嵌入。
    1. 清理编译缓存
      点击 Xcode 菜单 Product → Clean Build Folder,再手动删除 Derived Data:
    rm -rf ~/Library/Developer/Xcode/DerivedData
    

二、修复 OneSignal 4.5.0 带来的 Boost 库错误

若坚持使用 4.5.0 版本,可通过以下方式解决 Boost 库的 C++ 标准兼容问题:

    1. 更新 Boost 依赖版本
      在 ios/Podfile 中指定适配 C++17 的 Boost 版本:
    pod 'boost', '>= 1.76.0'
    
    执行命令更新:
    pod update boost
    
    1. 修改 Xcode C++ 标准设置
      选中主 target 和所有 Pods 相关 target,进入 Build Settings:
    • 搜索「C++ Language Dialect」,设置为 GNU++14 或 C++14
    • 搜索「C++ Standard Library」,设置为 libstdc++(若项目兼容)

建议优先方案

优先修复 OneSignal 4.5.1 的重复引用问题,无需降级到 4.5.0——降级带来的 Boost 兼容问题反而更复杂,解决重复嵌入后即可正常编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 00:26:29