Xcode 26 升级后模拟器运行问题 ITMS-90725 Developer disk image could not be mounted

Xcode 原来是 16 版本, 最近打包后收到邮件警告

67c8e831b8452914156df626617ee367.png

其中有警告 ITMS-90725
大概意识是让我升级 Xcode, 在 2026 年 4 月后所有的 app 都必须用 Xcode 26 来打包上传
于是我便升级了 macos 26.2
然后升级了 Xcode
之后发现我的老项目找不到我的设备和模拟器了


bb4915c2ec2470c5cf4112b9b8a01383.png

AI 问了也是答非所问,于是在网上找帖子发现有人提到了这个问题


1febb4939dd3655ff6fa952c5a8f718f.png

感谢网友, 于是我在项目里面去掉了我的build setings 中Excluded Architectures选项中的 arm64可以正常找到设备和模拟器了

当然了, 还要知道为什么这么改

Xcode 16 vs Xcode 26 架构与调试机制深度对比

1. 从“兼容模式”转向“原生强制” (Native Only)

  • Xcode 16 时代
    处于 Apple Silicon (M系列芯片) 的中期。为了照顾尚未更新 arm64 架构的第三方库,Xcode 16 内部保留了大量的 Rosetta 2 (转译) 逻辑。即便在设置中排除了 arm64,Xcode 16 仍可能默默地通过 x86_64 模式运行模拟器,用户往往感知不到配置错误。
  • Xcode 26 时代
    苹果已基本完成“去 Intel 化”。Xcode 26 的模拟器和调试工具(CoreDevice)是完全为 arm64 原生设计的。如果你在设置中“排除”了 arm64,Xcode 会判定该项目没有可在当前硬件上运行的代码,从而直接“罢工”,甚至不显示模拟器列表。

2. 调试挂载机制的彻底改变 (CoreDevice 2.0)

这是导致 Developer disk image could not be mounted 报错的深层原因:

  • 旧版 (Xcode 16)
    采用传统的磁盘映射(DDI)方式,挂载过程对项目的架构设置检查较松,只要镜像文件成功拷贝即可运行。
  • 新版 (Xcode 26)
    引入了更严苛的 “架构校验”。当你尝试真机运行时,Xcode 会预先检查项目的 EXCLUDED_ARCHS 设置。

    逻辑变化:如果 Xcode 发现你排除了 arm64,它会认为:“该 App 无法在 iPhone (arm64) 上运行,因此无需挂载调试镜像。”

    结论:修正架构设置(清空排除项)能间接修复挂载报错。


3. 模拟器架构的“纯净化”

  • Xcode 16 之前
    模拟器文件通常采用 Fat Binary(胖二进制),同时包含 x86_64arm64 两个版本。
  • Xcode 26 时代
    为了提升编译速度并减小磁盘占用,iOS 26 的模拟器 Runtime 几乎是 纯 arm64。一旦在项目中设置了排除该架构,就相当于堵死了唯一的运行通路。

📊 总结对比表

特性 Xcode 16 (2024) Xcode 26 (2026)
对 Intel 架构支持 依然支持转译运行 (Rosetta 2) 基本废弃,仅限特殊兼容模式
架构容错度 较高,会自动寻找替代方案 极低,设置不匹配直接隐藏设备
调试挂载 传统的磁盘镜像 (DDI) 动态票据验证 (CoreDevice 2.0)
默认倾向 兼容老旧项目 强制要求原生 arm64 性能
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容