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

SwiftUI预览报错XOJITError权限拒绝,求方案及Legacy模式解析

SwiftUI预览权限错误解决方案及Legacy预览模式说明

问题描述

新建仅包含默认ContentView(显示“Hello World”)的SwiftUI项目后,出现“Cannot preview in this file”错误,诊断详情如下:

== PREVIEW UPDATE ERROR:

    FailedToLaunchAppError: Failed to launch com.local.MyApp
    
    /Users/XXXXX/Library/Developer/Xcode/DerivedData/MyApp-dbwwfnvmshlirjbstcdluihkoslf/Build/Products/Debug/MyApp.app
    
    ==================================
    
    |  [Remote] JITError
    |  
    |  ==================================
    |  
    |  |  [Remote] XOJITError
    |  |  
    |  |  XOJITError: Could not create code file directory for session: Permission denied

未发现文件权限设置异常,需解决该错误并了解临时方案Editor -> Canvas -> Use Legacy Previews Execution的含义。

解决方案

  • 清理项目DerivedData:找到诊断信息中给出的DerivedData路径,删除对应文件夹,重启Xcode后重新构建预览;也可通过Xcode偏好设置(Preferences -> Locations)点击DerivedData旁的箭头打开文件夹,全选删除所有内容。
  • 赋予Xcode完全磁盘访问权限:打开系统设置→隐私与安全性→完全磁盘访问权限,确认Xcode已在列表中且权限开启,若未添加则点击“+”按钮找到Xcode应用添加。
  • 重启Mac:部分系统权限缓存问题可通过重启解决,重启后重新打开项目尝试预览。
  • 重置Xcode模拟器:打开Xcode的Window -> Devices and Simulators,选中所有模拟器点击右键选择“Erase All Content and Settings”,之后重新构建预览。

Legacy Previews Execution模式说明

Use Legacy Previews Execution是Xcode保留的旧版预览执行机制,和新版预览的核心区别:

  • 执行环境:新版预览采用独立的JIT(即时编译)沙盒进程运行预览代码,而Legacy模式将预览代码嵌入项目主编译进程,不依赖独立的沙盒JIT环境,因此能绕开权限相关的JIT错误。
  • 性能与独立性:Legacy模式预览启动速度通常稍慢,且预览进程与项目编译进程绑定;新版预览为独立进程,理论上资源隔离更彻底、性能更优,但对系统权限配置要求更高。
  • 兼容性:Legacy模式对旧项目、特殊权限配置的环境兼容性更好,适合作为临时方案解决新版预览的权限或JIT编译问题,但苹果官方推荐优先使用新版预览机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 11:19:54