安装@react-native-firebase/storage后iOS构建失败求助
问题描述
原本运行正常的React Native应用,执行npm install @react-native-firebase/storage后进入ios目录执行pod install出现错误。在Podfile中添加以下代码后,pod install成功:
pod 'FirebaseAppCheckInterop', :modular_headers => true pod 'FirebaseAuthInterop', :modular_headers => true pod 'FirebaseCoreExtension', :modular_headers => true pod 'GTMSessionFetcher', :modular_headers => true
但执行npm run ios时出现构建失败,错误信息如下:
** BUILD FAILED ** The following build commands failed: CompileC /Users/settasit/Library/Developer/Xcode/DerivedData/Saimai-foaejnvgtcqtzfgskjrmfysporda/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/RNFBDatabase.build/Objects-normal/arm64/RNFBDatabaseReferenceModule.o /Users/settasit/ReactNative/Saimai/node_modules/@react-native-firebase/database/ios/RNFBDatabase/RNFBDatabaseReferenceModule.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target 'RNFBDatabase' from project 'Pods') (1 failure)
当前Podfile内容:
require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' platform :ios, '14.0' prepare_react_native_project! # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. # because `react-native-flipper` depends on (FlipperKit,...) that will be excluded # # To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` # ```js # module.exports = { # dependencies: { # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), # ``` flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled linkage = ENV['USE_FRAMEWORKS'] if linkage != nil Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green use_frameworks! :linkage => linkage.to_sym end target 'Saimai' do pod 'RNScreens', :path => '../node_modules/react-native-screens' pod 'Google-Maps-iOS-Utils', :git => 'https://github.com/Simon-TechForm/google-maps-ios-utils.git', :branch => 'feat/support-apple-silicon' rn_maps_path = '../node_modules/react-native-maps' pod 'react-native-google-maps', :path => rn_maps_path config = use_native_modules! # Flags change depending on the env values. flags = get_default_flags() pod 'Firebase', :modular_headers => true pod 'FirebaseCoreInternal', :modular_headers => true pod 'GoogleUtilities', :modular_headers => true pod 'FirebaseCore', :modular_headers => true pod 'FirebaseAppCheckInterop', :modular_headers => true pod 'FirebaseAuthInterop', :modular_headers => true pod 'FirebaseCoreExtension', :modular_headers => true pod 'GTMSessionFetcher', :modular_headers => true use_react_native!( :path => config[:reactNativePath], # Hermes is now enabled by default. Disable by setting this flag to false. # Upcoming versions of React Native may rely on get_default_flags(), but # we make it explicit here to aid in the React Native upgrade process. :hermes_enabled => flags[:hermes_enabled], :fabric_enabled => flags[:fabric_enabled], # Enables Flipper. # # Note that if you have use_frameworks! enabled, Flipper will not work and # you should disable the next line. :flipper_configuration => flipper_config, # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) target 'SaimaiTests' do inherit! :complete # Pods for testing end post_install do |installer| react_native_post_install( installer, # Set `mac_catalyst_enabled` to `true` in order to apply patches # necessary for Mac Catalyst builds :mac_catalyst_enabled => false ) __apply_Xcode_12_5_M1_post_install_workaround(installer) end end
解决方案
尝试以下方法解决RNFBDatabase编译失败问题:
- 为RNFBDatabase启用模块化头文件
在Podfile中添加如下配置,和其他Firebase相关pod保持一致:
pod 'RNFBDatabase', :modular_headers => true
添加后重新执行pod install,再尝试构建。
统一@react-native-firebase依赖版本
检查package.json中所有@react-native-firebase相关包(如storage、database)的版本,确保版本完全一致。比如如果storage是18.x版本,database也必须是18.x版本,避免版本不兼容导致编译错误。修改后重新执行npm install和pod install。清理缓存并重新构建
- 删除ios目录下的Pods文件夹和Podfile.lock文件
- 执行
pod deintegrate - 清除Xcode的DerivedData:
rm -rf ~/Library/Developer/Xcode/DerivedData - 重新执行
pod install和npm run ios
- 调整Xcode编译设置
打开Xcode项目,找到RNFBDatabase target:
- 查看Build Settings中的Header Search Paths,确保Firebase相关头文件路径正确
- 将
Allow Non-modular Includes in Framework Modules选项设置为YES
内容的提问来源于stack exchange,提问作者Settasit7
相关产品推荐
相关产品推荐

