使用Firebase的React Native iOS应用构建失败求助
问题场景
执行命令 npx react-native run-ios --simulator='iPhone 14' 时,iOS应用构建失败,报错如下:
以下构建命令执行失败:
CompileC /Users/xx/Library/Developer/Xcode/DerivedData/Chatbot-eeojnmlkiuetmccwazfgajbalxbi/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/RNFirebase.build/Objects-normal/arm64/RNFirebaseFirestore.o /Users/xx/Desktop/Chatbot/node_modules/react-native-firebase/ios/RNFirebase/firestore/RNFirebaseFirestore.m normal arm64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (in target 'RNFirebase' from project 'Pods')
(1 failure)
已尝试卸载重装react-native-firebase、指定Flipper版本、执行pod repo update和pod install,问题仍存在。
环境信息
- React Native版本:react-native-cli: 2.0.1,react-native: 0.68.2
- Firebase相关版本:@react-native-firebase/firestore: 16.4.2,firebase: 9.13.0
- Podfile关键配置:
$FirebaseSDKVersion = '9.6.0' ... pod 'Firebase', :modular_headers => true pod 'FirebaseCoreInternal', :modular_headers => true pod 'GoogleUtilities', :modular_headers => true pod 'FirebaseCore', :modular_headers => true use_flipper!({ 'Flipper' => '0.162.0' })
解决方案
1. 修正Firebase SDK版本兼容性
@react-native-firebase/firestore 16.x版本要求Firebase SDK最低为9.9.0,当前Podfile指定的9.6.0版本过低,存在兼容性冲突:
- 修改Podfile中的
$FirebaseSDKVersion = '9.6.0'为$FirebaseSDKVersion = '9.13.0'(与npm包firebase@9.13.0版本保持一致)
2. 彻底清理并重建依赖
执行以下命令清理缓存并重新安装依赖:
# 清理Node.js依赖 rm -rf node_modules npm cache clean --force npm install # 清理iOS Pod依赖 cd ios rm -rf Podfile.lock Pods pod repo update pod install cd ..
3. 补充Firestore模块化头配置
在Podfile的target代码块中添加Firestore的模块化头配置,确保编译时能正确引用头文件:
pod 'FirebaseFirestore', :modular_headers => true
4. 清理Xcode编译缓存
- 打开Xcode,执行
Product > Clean Build Folder(快捷键Cmd+Shift+K) - 删除Xcode DerivedData目录:
rm -rf ~/Library/Developer/Xcode/DerivedData
5. 适配M1/M2芯片架构(若使用Apple Silicon设备)
在Podfile的post_install块中添加架构排除配置,避免模拟器编译冲突:
post_install do |installer| react_native_post_install(installer) __apply_Xcode_12_5_M1_post_install_workaround(installer) # 添加架构适配代码 installer.pods_project.targets.each do |target| target.build_configurations.each do |config| if config.name == 'Debug' && config.build_settings['SDKROOT'] == 'iphonesimulator' config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' end end end end
完成以上步骤后,重新执行npx react-native run-ios --simulator='iPhone 14'尝试构建。
内容的提问来源于stack exchange,提问作者Vanessa Stanley

