M1芯片Mac运行Xcode模拟器报debugserver附加失败如何解决
M1芯片Mac运行Xcode模拟器报debugserver附加失败修复方案
按以下顺序排查操作即可解决问题:
- 关闭Xcode的Rosetta运行模式:右键访达中Xcode图标,选择「显示简介」,取消勾选「使用Rosetta打开」,重启Xcode。给Xcode开启Rosetta是触发该报错的核心原因,Rosetta转译运行的Xcode会调用x86_64版本的debugserver,无法匹配M1环境下的模拟器进程架构。
- 清理全量构建缓存:在Xcode中按下快捷键
Shift + Command + K清理当前项目构建产物;再进入Xcode设置-「Locations」页,找到Derived Data对应路径,删除目标项目的缓存文件夹,清除历史x86架构编译的残留文件。 - 调整项目架构编译配置:打开项目Build Settings配置页,找到
Excluded Architectures选项,为「Any iOS Simulator SDK」配置项添加值x86_64,强制模拟器环境编译arm64架构产物;同时确认Architectures选项选中Standard Architectures (arm64, x86_64),不要手动指定仅编译x86_64架构。 - 适配CocoaPods依赖架构(项目使用CocoaPods时操作):打开项目Podfile,在post_install钩子中添加如下配置,强制所有第三方依赖在模拟器环境排除x86_64架构:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'x86_64' config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES' end end end
配置完成后在项目根目录执行pod install重新集成依赖。
- 重置模拟器环境:打开Xcode顶部菜单「Xcode - Devices and Simulators」,选中当前运行报错的模拟器,右键选择删除后重新创建同iOS版本的模拟器;也可直接在终端执行命令
xcrun simctl shutdown all && xcrun simctl erase all重置所有模拟器状态。 - 修复调试权限:打开终端执行命令
sudo DevToolsSecurity -enable,输入系统开机密码后回车,开启系统开发调试权限,避免权限拦截导致debugserver无法附加进程。
补充说明:如果确实需要运行x86_64架构的模拟器包,不要给Xcode开启Rosetta,单独选中模拟器程序,右键「显示简介」给模拟器勾选Rosetta即可。
内容的提问来源于stack exchange,提问作者Qazi Ammar
相关产品推荐
相关产品推荐

