React Native集成Flipper时出现Multiple commands produce OpenSSL.xcframework报错
解决Flipper依赖OpenSSL与项目内置OpenSSL冲突方案
你可以通过修改Podfile配置,排除Flipper-Folly的OpenSSL子依赖,让Flipper直接使用项目已有的OpenSSL framework,无需移除Flipper即可解决冲突,操作步骤如下:
步骤1:调整Flipper引入配置
打开项目ios/Podfile文件,找到原有Flipper引入语句:use_flipper!()
修改为如下配置,显式排除Flipper-Folly的OpenSSL子依赖:
use_flipper!({ 'Flipper-Folly' => { :subspecs => [ 'Flipper-Folly/Core', 'Flipper-Folly/Futures', 'Flipper-Folly/Glog', 'Flipper-Folly/Portability', 'Flipper-Folly/Synchronization' ], :excluded_subspecs => ['Flipper-Folly/OpenSSL'] } })
步骤2:添加post_install配置关联项目OpenSSL
在Podfile末尾的post_install钩子中添加Flipper-Folly的编译配置,让其使用项目内置的OpenSSL:
post_install do |installer| # 遍历所有Pod目标 installer.pods_project.targets.each do |target| if target.name == 'Flipper-Folly' target.build_configurations.each do |config| # 移除Flipper-Folly自带的OpenSSL头文件搜索路径 config.build_settings['HEADER_SEARCH_PATHS'] ||= [] config.build_settings['HEADER_SEARCH_PATHS'].delete_if { |path| path.include?('openssl') } # 替换为你项目中OpenSSL.xcframework的实际头文件路径 config.build_settings['HEADER_SEARCH_PATHS'] << '$(SRCROOT)/OpenSSL.xcframework/ios-arm64_i386_x86_64-simulator/Headers' config.build_settings['HEADER_SEARCH_PATHS'] << '$(SRCROOT)/OpenSSL.xcframework/ios-arm64_armv7/Headers' # 强制链接项目内置的OpenSSL framework config.build_settings['OTHER_LDFLAGS'] ||= [] config.build_settings['OTHER_LDFLAGS'] << '-framework OpenSSL' end end end # 保留原有RN项目自带的flipper_post_install调用,不要删除 flipper_post_install(installer) end
注意需要将上面代码里的OpenSSL头文件路径,替换为你项目中实际存放OpenSSL.xcframework的路径。
步骤3:重新安装Pods依赖
在ios目录下执行如下命令重置Pod依赖:
cd ios rm -rf Pods Podfile.lock pod install --repo-update
执行完成后重新打开Xcode工作区编译项目即可。
注意事项
- 确保你项目内置的OpenSSL版本为1.1.x及以上,和RN0.65对应Flipper版本适配的Flipper-Folly版本要求兼容,避免出现编译符号缺失报错
- 后续如果升级Flipper版本,需要先确认对应版本Flipper-Folly的子依赖命名是否有调整,对应修改Podfile中的subspec配置即可
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

