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

M1 Pro Mac iOS项目编译问题:如何同时适配模拟器与真机?

解决M1 Pro Mac上iOS项目同时适配模拟器与真机的架构冲突问题

问题根源

M1系列Mac采用arm64架构,Xcode默认会为模拟器编译arm64版本,但部分第三方库(如Moya)仅提供x86_64的模拟器架构,导致编译时出现模块不匹配错误;而真机必须编译arm64架构,全局排除arm64会导致真机编译失败。以下是无需反复修改Excluded Architectures的解决方案:


方案一:分平台分配置设置排除架构

  1. 打开项目的Build Settings,搜索Excluded Architectures
  2. 点击选项右侧的+,选择Add Configuration-Specific Setting,为Debug配置单独添加设置
  3. 点击Debug行的+,选择Add Platform-Specific Setting,选择iOS Simulator
  4. 在iOS Simulator对应的输入框中填入arm64(仅排除模拟器的arm64架构,真机和Release配置不做任何排除)
  5. 确保真机的Debug、所有Release配置的Excluded Architectures为空

方案二:通过Podfile统一配置Pods的架构排除

如果问题主要出现在第三方Pod库,可在Podfile中添加以下脚本,自动为Pods分配置分平台设置架构:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      # 仅针对Debug模拟器配置排除arm64
      if config.name == 'Debug' && config.build_settings['SDKROOT'] == 'iphonesimulator'
        config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'
      else
        # 其他配置清空排除的架构,确保真机编译正常
        config.build_settings['EXCLUDED_ARCHS'] = ''
      end
    end
  end
end

添加后执行pod install更新Pods配置。


方案三:配合Build Active Architecture Only优化编译

在Build Settings中搜索Build Active Architecture Only:

  • 设置Debug模式为YES:仅编译当前活跃设备的架构,减少编译时间并适配当前设备
  • 设置Release模式为NO:编译所有支持的架构,确保发布包兼容所有设备

验证效果

完成上述设置后,无需修改任何配置,直接切换模拟器和真机即可正常编译:

  • 模拟器编译时会自动排除arm64,使用x86_64架构适配第三方库(通过Rosetta转译运行)
  • 真机编译时会使用arm64架构,不会因为排除设置导致缺失架构

内容的提问来源于stack exchange,提问作者Artyom Vlasenko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:15:35