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

M1 MacBook Pro下Xcode编译iOS项目arm64报错求解决方案

问题本质

报错

Could not find module 'Viewer' for target 'arm64-apple-ios-simulator'; found: x86_64-apple-ios-simulator, x86_64, at: /Users/bappaditya/Library/Developer/Xcode/DerivedData/Aconex-dcwfxmeztacqqoewrptfilxusnyj/Build/Products/Debug-iphonesimulator/Viewer.framework/Modules/Viewer.swiftmodule

的核心原因是项目依赖的Viewer框架仅提供了x86_64架构的模拟器切片,未适配M1设备对应的arm64架构iOS模拟器。
单纯全局在Excluded Architectures中添加arm64会导致Swift Package Manager编译产物与主项目架构不匹配,而使用Rosetta启动Xcode会丢失硬件权限,导致相机、相册等功能异常。

可行解决方案
  • 方案一:优先更新依赖框架
    直接索要Viewer框架官方提供的支持arm64 iOS模拟器的XCFramework版本,这是最稳定的长期解决方案,无需修改项目编译配置即可原生适配M1设备编译。
  • 方案二:精准配置排除架构(无需修改依赖,可快速解决问题)
    不要全局添加arm64到排除架构,按以下步骤修改Build Settings:
    1. 找到Excluded Architectures配置项,删除全局添加的arm64规则
    2. 点击配置项左侧的加号,选择Any iOS Simulator SDK,在对应值中添加arm64,仅对模拟器场景排除arm64架构,真机编译不受影响
    3. 找到Build Active Architecture Only配置项,Debug模式设置为YES,Release模式设置为NO
    4. 清空Xcode Derived Data文件夹,重启Xcode后重新编译即可
      该方案会让Xcode在M1设备上编译模拟器版本时自动转用x86_64架构运行,无需用Rosetta启动Xcode,可正常调用相机、相册等硬件功能。
  • 方案三:修改SPM包配置(仅适用于Viewer为团队自研SPM包的场景)
    若Viewer是自行维护的Swift Package,可在其Package.swift对应target的编译配置中添加以下规则,仅排除模拟器场景的arm64架构:
    .target(
        name: "Viewer",
        dependencies: [],
        linkerSettings: [.excludeArchitectures(.arm64, .when(platforms: [.iOS], configuration: .debug))]
    )
    
验证说明

配置完成后直接原生启动Xcode即可正常编译最新版iOS模拟器,同时真机编译、相机相册等原有功能均不会受到影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:15:00