Xcode15.3编译React Native0.71.8报错:指定类型非函数或函数指针
解决Xcode 15.3编译React Native 0.71.8模拟器报错的方法
这个报错源于Xcode 15.3的C++编译规则变化,与React Native 0.71.8依赖的Flipper版本不兼容,以下是几种可行的解决方法:
方法一:修改Flipper源码适配编译规则
找到iOS项目的Pods/Flipper/FlipperNetworkPlugin/Sources/FlipperNetworkPlugin/FlipperNetworkPlugin.cpp文件,定位到创建FlipperSocketClient的代码段,调整certificateProvider参数的传递方式:
原代码示例:
auto socketClient = std::make_unique<FlipperSocketClient>( url, certificateProvider, ... );
修改为:
auto socketClient = std::make_unique<FlipperSocketClient>( url, [&](const std::string&) { return certificateProvider->certificate(); }, ... );
注意:修改后避免执行pod update,否则改动会被覆盖,可使用patch-package工具将补丁持久化。
方法二:降级Flipper至兼容版本
在iOS项目的Podfile中指定与Xcode 15.3兼容的Flipper版本:
use_flipper!({ 'Flipper' => '0.182.0', 'Flipper-Folly' => '2.6.10' })
执行以下命令重新安装依赖:
pod install --repo-update
方法三:临时禁用Flipper(无需调试场景)
如果不需要Flipper调试功能,可直接关闭相关配置:
- 打开
Podfile,注释掉Flipper相关配置:
# use_flipper!() post_install do |installer| react_native_post_install(installer) __apply_Xcode_12_5_M1_post_install_workaround(installer) end
- 执行
pod install更新依赖; - 打开
AppDelegate.mm,注释掉Flipper初始化代码:
// #if DEBUG // InitializeFlipper(application); // #endif
额外建议
- 确保CocoaPods版本在1.14.0以上,避免旧版本带来的兼容性问题;
- 若使用方法一,后续升级依赖时需重新检查或更新补丁。
内容的提问来源于stack exchange,提问作者Waseem Kurne
相关产品推荐
相关产品推荐

