如何在XCode 13中运行React Native 0.63版本应用?
XCode 13 搭配低于 0.66 版本 React Native 兼容解决方案
全程不需要升级RN版本,也不需要升级到0.64/0.65版本即可实现兼容
问题1:XCode 13环境下使用低于0.66版本React Native开发的可行方案
核心是对RN iOS侧启动逻辑做定向修改,不需要动业务代码,操作如下:
- 先处理命令行工具路径问题,执行下方命令指定XCode命令行工具位置,修复xcrun找不到的问题:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
- 打开iOS项目的
.xcworkspace(或.xcodeproj)文件,进入File > Project Settings,将Build System修改为Legacy Build System - 把项目iOS端的
Deployment Target最低适配版本调整到iOS 11及以上,即可正常编译适配iOS 15的安装包 - 如果执行后还是报错,可以修改
node_modules/@react-native-community/cli-platform-ios/build/commands/runIOS/index.js文件,将所有xcrun调用替换为/Applications/Xcode.app/Contents/Developer/usr/bin/xcrun绝对路径,修改完成后可以用patch-package工具生成补丁,后续安装依赖会自动生效,不需要每次手动修改node_modules内容
问题2:xcrun命令的修复方案与等效替代
XCode 13并没有完全移除xcrun,只是默认没有将命令行工具路径注册到系统全局,优先采用以下修复方案:
- 先执行
xcode-select -p查看当前命令行工具路径,如果输出不是/Applications/Xcode.app/Contents/Developer,执行上一问题中的xcode-select -s命令切换路径,重启终端后执行xcrun --version就能验证是否恢复正常 - 如果不想做全局路径配置,可以给xcrun单独做软链接:
sudo ln -s /Applications/Xcode.app/Contents/Developer/usr/bin/xcrun /usr/local/bin/xcrun
- 等效替代方案:如果确实不想调用xcrun,可以直接调用对应工具的绝对路径,比如原
xcrun simctl list devices可以替换为/Applications/Xcode.app/Contents/Developer/usr/bin/simctl list devices,把RN启动脚本中所有xcrun调用替换为对应工具的绝对路径即可正常运行
内容的提问来源于stack exchange,提问作者Ale TheFe
相关产品推荐
相关产品推荐

