升级ReactNative 0.72.10与reanimated 3.6.1后iOS构建崩溃求助
问题原因
React Native 0.72.x 版本对JSI(JavaScript Interface)接口做了兼容性变更,其中jsi::ArrayBuffer::data()方法被调整为const成员函数,但你当前使用的react-native-reanimated@3.6.1的C++代码中,是在const jsi::ArrayBuffer实例上调用了未标记为const的data()方法,触发编译错误。
解决方法
- 升级react-native-reanimated到兼容RN 0.72的版本
Reanimated官方在3.7.0及以后版本修复了该兼容性问题,执行命令升级:npm install react-native-reanimated@^3.7.0 # 或使用yarn yarn add react-native-reanimated@^3.7.0 - 清理iOS构建缓存
升级完成后,清理缓存避免旧编译文件残留:# 清除依赖缓存 rm -rf node_modules package-lock.json yarn.lock npm install # 清理iOS Pods与构建文件 cd ios pod deintegrate rm -rf Podfile.lock build pod install cd .. # 重置Metro缓存 npx react-native start --reset-cache - 临时应急修复(不推荐长期使用)
如果暂时无法升级Reanimated,可手动修改node_modules/react-native-reanimated/Common/cpp/SharedItems/Shareables.h文件:
将报错位置的const jsi::ArrayBuffer& arrayBuffer改为jsi::ArrayBuffer& arrayBuffer,或对arrayBuffer做const_cast转换,但这种方法可能引发其他兼容性问题,仅作临时方案。
内容的提问来源于stack exchange,提问作者lucassp
相关产品推荐
相关产品推荐

