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

React Native iOS构建:react-native-share引发x86_64重复符号报错

问题根因

这是react-native-share@7.4.1版本自带的iOS配置bug:RNShare的源码被同时加入了主应用Target、RNShare Pod依赖两个编译单元的源文件列表,同一份代码被编译两次,一份输出到主工程的中间产物目录Build/Intermediates.noindex,一份被打包进Pod编译生成的静态库libRNShare.a存到Build/Products目录,链接阶段就会报重复符号错误,和网上常见的多依赖冲突、导入写法错误的场景完全不同。

修复步骤

按顺序操作即可:

  • 第一步:清理所有历史编译缓存,避免旧产物干扰
    执行以下命令清空缓存:
# 清空Xcode全局编译缓存
rm -rf ~/Library/Developer/Xcode/DerivedData/*
# 进入iOS目录清理pod相关缓存
cd ios
pod deintegrate
pod cache clean react-native-share --all
  • 第二步:修正Pod配置,避免RNShare源码被重复编译
    如果你的Podfile里是手动写的react-native-share依赖声明,直接给它加上modular_headers => false参数即可:
pod 'react-native-share', :path => '../node_modules/react-native-share', :modular_headers => false

如果你是用RN自动链接(也就是Podfile里通过use_native_modules!自动引入依赖,没有手动写RNShare的pod声明),直接在Podfile末尾添加下面的post_install钩子,自动修正RNShare的编译配置:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    next unless target.name == 'RNShare'
    target.build_configurations.each do |config|
      config.build_settings['OTHER_CFLAGS'] = ['$(inherited)', '-DREACT_NATIVE_SHARE_STATIC_LIBRARY=1']
    end
  end
end
  • 第三步:重新安装依赖后构建
    在ios目录下重新执行pod安装,回到项目根目录重新触发iOS构建即可:
pod install
cd ..
npm run ios
兜底修复方案

如果上面的操作执行完还是报相同错误,直接用Xcode打开ios/你的项目名.xcworkspace手动修正:

  1. 选中左侧导航栏最上方的项目文件,在Target列表选中你的主应用Target
  2. 切换到Build Phases标签页,找到Compile Sources列表
  3. 在列表搜索框输入RNShare,把所有搜索出来的.m文件选中,点击列表下方的减号移除

注意:这一步只是把这些文件从主应用的编译列表里移除,不要勾选删除文件的选项,这些源码后续会由RNShare的Pod Target负责编译,不会影响功能正常使用

  1. 重新点击Xcode的运行按钮,或者回到终端执行npm run ios即可正常构建

内容的提问来源于stack exchange,提问作者R. Gurung

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 18:31:00