React Native运行yarn ios报CoreSimulator.SimError 405如何解决
问题根因
该错误为Xcode 13在M1芯片设备上的已知兼容问题:未明确指定运行目标时,xcodebuild会匹配到状态为关机的模拟器实例,且不会自动触发模拟器唤醒,最终导致安装应用时抛出Shutdown状态下无法查找实例的405错误。
永久解决方案
以下方案按操作成本从低到高排序,任选其一即可:
方案1:指定固定模拟器启动
每次运行命令时明确指定要使用的模拟器,避免自动匹配触发异常,命令格式如下:# 按模拟器名称指定,名称可从你报错日志里的列表直接选 yarn ios --simulator "iPhone 13" # 也可以按UDID指定 yarn ios --udid 81EA832E-6ED3-4560-8994-298CB8A00D2A你也可以直接修改package.json里的
ios脚本,把指定模拟器的参数写死,后续直接执行yarn ios即可生效:"scripts": { "ios": "react-native run-ios --simulator \"iPhone 13\"" }方案2:修复M1架构编译配置
架构不兼容也会间接导致模拟器启动异常,按以下步骤配置:- 打开Xcode > 偏好设置 > 位置,确认
Command Line Tools选中的是当前Xcode 13.0版本 - 打开iOS项目的xcworkspace文件,选中项目根节点 > 构建设置 > 排除架构,在
Any iOS Simulator SDK选项下添加arm64 - 在Podfile中添加如下配置,执行
pod install后重新构建:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end end end- 打开Xcode > 偏好设置 > 位置,确认
方案3:自动预启动模拟器
在package.json中添加前置钩子,每次执行yarn ios前自动唤醒指定模拟器,无需手动操作:"scripts": { "preios": "xcrun simctl list devices | grep -q 'iPhone 13 (Booted)' || xcrun simctl boot 'iPhone 13'", "ios": "react-native run-ios --simulator \"iPhone 13\"" }方案4:重置模拟器缓存
如果是模拟器状态异常导致的偶现问题,执行以下命令重置所有模拟器即可解决:xcrun simctl shutdown all xcrun simctl erase all执行完成后重启Xcode再运行
yarn ios即可。
内容的提问来源于stack exchange,提问作者poPaTheGuru
相关产品推荐
相关产品推荐

