You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1芯片Xcode Rosetta构建正常 如何让xcodebuild以Rosetta模式运行

问题原因

触发该链接错误的核心原因是项目依赖的旧版Realm静态库librealmcore-ios.a未提供arm64架构的iOS Simulator切片,仅包含真机arm64、x86_64模拟器切片。以Rosetta模式启动Xcode时,构建进程会通过转译运行x86_64指令集,自动选择x86_64架构的模拟器目标完成链接,因此不会报错。

让命令行xcodebuild以Rosetta模式运行的配置方法

单命令临时生效

直接在原有xcodebuild命令前添加arch -x86_64前缀,强制命令以x86_64架构通过Rosetta转译执行,修改后的完整命令如下:

arch -x86_64 xcodebuild build -workspace "MyWorkspace.xcworkspace" -scheme "MyApp" \
    -destination "generic/platform=iOS Simulator"

该方案无需修改任何全局配置,仅对当前执行的单条命令生效,适合临时构建场景。

全局默认生效

如果需要所有xcodebuild命令默认走Rosetta模式,可在shell配置文件中添加别名:

  • 打开当前使用的shell配置文件,zsh用户编辑~/.zshrc,bash用户编辑~/.bash_profile
  • 在文件末尾添加如下配置:
alias xcodebuild='arch -x86_64 xcodebuild'
  • 执行source ~/.zshrc(或对应shell配置文件路径)让配置立即生效
    配置完成后,直接执行原来的xcodebuild命令就会自动以Rosetta转译模式运行。
验证配置是否生效

执行如下命令,如果输出架构为x86_64,说明xcodebuild已经成功运行在Rosetta转译模式下:

xcodebuild -version && arch

执行原构建命令不再出现开头的ld链接错误,即代表配置正常。

长期根治方案(推荐)

依赖Rosetta转译构建属于临时兼容方案,苹果后续会逐步移除Rosetta支持,建议从根源解决架构不匹配问题:

  • 升级项目依赖的Realm版本至v10.10.0及以上,该版本开始Realm官方正式提供arm64架构的iOS Simulator切片,升级后无需开启Rosetta,原生arm64模式下的Xcode、xcodebuild均可正常完成构建
  • 如果暂时无法升级Realm版本,可直接在项目Build Settings中修改配置,无需转译整个Xcode进程:找到Excluded Architectures配置项,针对Any iOS Simulator SDK添加arm64到排除架构列表,构建模拟器目标时会自动选择x86_64架构完成编译链接,效果与Rosetta模式完全一致。

内容的提问来源于stack exchange,提问作者Michael Ozeryansky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 14:39:19