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

Apple Silicon Mac上iOS Simulator为何编译x86_64?求arm64编译方案

问题解答

疑问解答

1. 为何Apple Silicon Mac编译arm64模拟器时出现x86_64链接错误?

Google MLKit的预编译二进制包未包含arm64 iOS模拟器架构,但Pod配置或Xcode默认设置仍保留了x86_64的编译目标。当你尝试编译arm64模拟器时,Xcode找不到对应的arm64模拟器库,会尝试 fallback 链接x86_64版本,最终因架构不匹配报错。

2. 为何arm64设备编译正常,模拟器却报错?Rosetta模式为何能运行?

  • 设备端的arm64(iOS arm64)和模拟器的arm64(iOS Simulator arm64)是两个不同的编译目标,MLKit提供了设备端的arm64库,但未提供模拟器版本。
  • Rosetta模式下,Xcode会以x86_64架构编译模拟器目标,而MLKit有对应的x86_64模拟器库,因此能正常链接运行;非Rosetta模式下,Xcode默认用arm64编译模拟器,找不到匹配的库就会报错。

解决方案:强制仅编译arm64架构

针对Xcode 15.0.1,按以下步骤操作:

1. 修改项目和Target的Build Settings

  • 打开项目根目录,进入Build Settings标签页
  • 搜索Architectures:
    • 设置Architectures为arm64(删除其他架构,只保留这一项)
    • 若能找到Valid Architectures,同样设置为arm64
  • 搜索Excluded Architectures:
    • 在Debug和Release配置下,添加x86_64(确保编译时排除该架构)
  • 搜索Build Active Architecture Only,设置为YES(仅编译当前选中的架构)

2. 修改Podfile强制Pods适配arm64

在Podfile末尾添加以下代码:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      # 排除模拟器的x86_64架构
      config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'x86_64'
      # 强制Pods仅编译arm64
      config.build_settings['ARCHS'] = 'arm64'
      config.build_settings['VALID_ARCHS'] = 'arm64'
    end
  end
end

执行pod install重新安装依赖。

3. 清理缓存并重新编译

  • 执行rm -rf ~/Library/Developer/Xcode/DerivedData删除Xcode缓存
  • 按下Shift + Cmd + K清理Build Folder
  • 重新选择arm64模拟器编译运行

注意:如果Google MLKit后续更新了支持arm64模拟器的版本,建议优先升级库版本,上述方案属于临时适配手段。

内容的提问来源于stack exchange,提问作者Can Poyrazoğlu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 23:17:19