React Native 0.68.1集成react-native-firebase/app@15.3.0后iOS构建失败求助(含react-native-razorpay依赖)
作为RN新手遇到这种构建错误确实头疼,我帮你一步步排查解决这个问题——根源主要是use_frameworks!与react-native-razorpay的静态库依赖冲突,加上Firebase集成的影响,下面是具体修复步骤:
1. 调整Podfile的use_frameworks!配置
你的Podfile里启用了use_frameworks!,但默认是动态链接模式,而react-native-razorpay这类老库通常依赖静态链接方式。CocoaPods 1.10+支持指定静态链接的framework,修改Podfile:
target 'DussriShadi' do # 替换原来的use_frameworks!为下面这行 use_frameworks! :linkage => :static config = use_native_modules! # ... 其余代码保持不变 end
这个配置既能满足react-native-firebase对framework的需求,又能兼容依赖静态库的第三方库。
2. 彻底清理缓存并重新安装Pods
缓存问题是RN iOS构建失败的常见诱因,执行以下命令:
- 进入ios目录:
cd ios - 删除Pods文件夹和锁文件:
rm -rf Pods Podfile.lock - 清理Xcode派生数据:
rm -rf ~/Library/Developer/Xcode/DerivedData - 重新安装Pods:
pod install
3. 确保react-native-razorpay版本兼容
旧版本的react-native-razorpay可能不支持use_frameworks!,升级到兼容RN 0.68的最新版本:
npm install react-native-razorpay@latest --save
安装完成后回到ios目录再次执行pod install。
4. 调整Xcode项目的Build Settings
打开ios目录下的DussriShadi.xcworkspace,找到react-native-razorpay的target(在Pods项目分组里),修改以下设置:
- Build Settings -> Linking -> Other Linker Flags:添加
-ObjC(如果已存在就忽略) - Build Settings -> Build Options -> Enable Bitcode:设置为
No(多数第三方库不支持Bitcode) - Build Settings -> Architectures:确保只保留
arm64和x86_64(移除其他架构,避免模拟器/真机架构冲突)
5. 验证Firebase配置正确性
react-native-firebase 15.3.0版本是支持use_frameworks! :linkage => :static的,不需要额外修改,但可以确认post_install钩子是否正常:
你的Podfile里的react_native_post_install(installer)已经包含了RN需要的配置,保持原样即可。
完成以上步骤后,再执行npx react-native run-ios,应该就能成功构建了。如果还是报错,可以尝试临时关闭Hermes(把hermes_enabled => flags[:hermes_enabled]改成hermes_enabled => false),排除Hermes带来的冲突。
内容的提问来源于stack exchange,提问作者React_Coder

