M2 Max处理器运行React Native iOS项目报错求助
React Native iOS端(M2 Max)RCT-Folly编译&链接错误解决方案
修复std::unary_function缺失问题
这个报错是因为Xcode 14+默认采用C17标准,而unary_function在C17中已被移除,旧版RCT-Folly仍依赖该特性,两种解决方式二选一即可:
- 修改编译标准
找到项目内Pods/Target Support Files/Pods-<你的项目名>/Pods-<你的项目名>.xcconfig文件,添加一行配置:
或者直接在Xcode中选中RCT-Folly target,进入CLANG_CXX_LANGUAGE_STANDARD = c++14Build Settings->C++ Language Standard,将其设置为GNU++14或C++14。 - 添加兼容宏定义(建议配合脚本避免重复修改)
在报错对应的RCT-Folly头文件(比如folly/functional/Invoke.h)顶部插入代码:
若不想每次执行#if __cplusplus >= 201703L #define unary_function __unary_function #define binary_function __binary_function #endifpod install后重复修改,可在Podfile中添加post_install脚本自动注入这段代码。
解决后续链接错误
链接错误多和架构不兼容、缓存冗余、依赖版本冲突有关,按顺序尝试以下步骤:
- 彻底清理缓存并重装依赖
执行以下命令:rm -rf node_modules rm package-lock.json yarn.lock pod deintegrate pod clean rm -rf ~/Library/Developer/Xcode/DerivedData npm install pod install - 适配M2架构配置
在Xcode中选中主target,进入Build Settings:- 将
Architectures设置为Standard Architectures (arm64, x86_64) - Debug模式下勾选
Build Active Architecture Only为YES - 为
EXCLUDED_ARCHS分别配置:Debug填i386,Release填armv7 i386
- 将
- 升级核心依赖版本
确保使用React Native 0.70+版本(原生支持Apple Silicon),同时在Podfile中指定兼容C++17的RCT-Folly版本:
执行pod 'RCT-Folly', :git => 'https://github.com/facebook/folly.git', :tag => 'v2022.05.16.00', :modular_headers => truepod install完成更新。 - 排查第三方库兼容性
部分第三方Native库未适配Apple Silicon,检查项目依赖列表,替换老旧库为兼容版本,或联系库作者更新适配。
内容的提问来源于stack exchange,提问作者SamWieszKto
相关产品推荐
相关产品推荐

