Expo 47下EAS-CLI iOS构建失败:std::unary_function报错
解决Expo EAS iOS构建中boost库std::unary_function报错问题
问题原因
该错误源于C++17标准移除了std::unary_function,而项目依赖的boost版本仍在调用这个已废弃的类型,当使用默认启用C++17及以上标准的新版Xcode构建时,就会触发此报错。
修复步骤
- 升级boost依赖版本:若项目通过Pod引入boost,在Podfile中指定适配C++17的boost版本(如1.76.0及以上);若为React Native自带的boost,确保React Native版本在0.68+(该版本起已修复boost兼容性问题)。
- 强制指定C++14编译标准:在iOS项目的Podfile中添加以下配置,让boost相关target使用C++14编译:
执行post_install do |installer| installer.pods_project.targets.each do |target| if target.name == 'boost' || target.name.start_with?('boost-') target.build_configurations.each do |config| config.build_settings['CLANG_CXX_LANGUAGE_STANDARD'] = 'c++14' end end end endnpx pod-install ios更新Pod配置后,再重新运行eas build --platform ios。 - 升级Expo SDK版本:如果使用的Expo SDK版本偏低,升级至最新稳定版(如SDK 48+),新版本通常已处理此类依赖兼容问题。
验证建议
先通过eas build --platform ios --local进行本地构建测试,确认问题修复后再提交远程构建,避免浪费EAS构建资源。
内容的提问来源于stack exchange,提问作者JD14
相关产品推荐
相关产品推荐

