从最新的 Xcode 15 升级到 Xcode 16 后,我在 tvOS 17.7 上构建 Apple TV 时遇到问题(我有一个通过 USB-C 连接的旧型号,这消除了网络连接问题。)但是当我遇到以下问题时我进入“设备和模拟器”窗口:
之前的准备错误:未能找到可用于的DDI 在设备上启用 DDI 服务。通常这意味着我们最好的 DDI 可以找到没有兼容 CoreDevice 内容的平台。 从命令行运行“devicectl list PreferredDDI”以获取更多信息 有关为何找不到有效 DDI 的详细信息。
当我跑步时
devicectl list preferredDDI
我得到:
WARNING: No usable DDI found for the tvOS platform (The DDI's CoreDevice content is too old.). Best (unusable) DDI found is:
• hostDDI: file:///Library/Developer/DeveloperDiskImages/tvOS_DDI.dmg
▿ ddiMetadata:
• buildUpdate: 15F31d
• contentIsCompatible: false
• coreDeviceVersionChecksIncludeDevelopmentRevision: true
• developmentRevision: 0
• enforcingCoreDeviceVersionChecks: true
• platform: tvOS
▿ projectMetadata:
• Citrine-25.1.1
• CoreDevice-355.28
• DTDeveloperDiskImageSupport-14.0.0
• DTOCMock-22600
• GPUToolsDevice_DDI-270.8
• JetsamProperties-1925.120.11
• LiveExecutionResultsLogger-19506
• Mercury-49
• XCTest-22720
• incompatibleContentReason: The DDI's CoreDevice content is too old.
• isUsable: false
• variant: external
我已经尝试过:
xcode-select --switch /path/to/new/Xcode
defaults write com.apple.dt.Xcode DVTEnableCoreDevice disable
我记得为 Xcode 15 启用过/Library/Developer/DeveloperDiskImages/
以尝试重新触发它这些步骤都不起作用!请注意,当我升级到 macOS 14.7 时,我确实收到此提示:“需要软件更新才能连接”,但我收到“安装失败”和“无法安装该软件,因为当前无法从软件更新服务器获取该软件” ”。也许是因为我使用的是带有托管软件更新的工作笔记本电脑。
短片
对我有用的是跑步
xcrun devicectl manage ddis update
。我能够通过运行 xcrun devicectl list preferredDDI
来验证这是否有效,这给了我以下内容:
The DDI used for the tvOS platform:
• hostDDI: file:///Library/Developer/DeveloperDiskImages/tvOS_DDI.dmg
▿ ddiMetadata:
• buildUpdate: 16A242d
• contentIsCompatible: true
• coreDeviceVersionChecksIncludeDevelopmentRevision: true
• developmentRevision: 0
• enforcingCoreDeviceVersionChecks: true
• platform: tvOS
▿ projectMetadata:
• Citrine-94
• CoreDevice-397.21
• DTDeveloperDiskImageSupport-14.0.0
• DTOCMock-23002
• GPUToolsDevice_DDI-300.21
• JetsamProperties-2205
• LiveExecutionResultsLogger-20002
• Mercury-54
• XCTest-23196
• isUsable: true
• variant: external
我重新启动了 Xcode,下载设备数据后它就可以工作了
长
Xcode 16 在 DDI 上进行了扩展——我假设是“开发人员磁盘映像”——这将在 Xcode 15 中首次引入:
在 iOS 17+ 中,我们使用新的设备堆栈 (CoreDevice) 来 与设备通信。有了这个新的设备堆栈,就有一个 DDI 每个平台(而不是每个操作系统版本)。这个相同的设备堆栈 将在您系统上的所有 Xcode 版本之间共享,并且 安装较新版本的 Xcode 将更新 CoreDevice 及其 DDI。
devicectl 现在提供命令来管理 Mac 上存在的开发人员磁盘映像。
所以我认为这是 Xcode 的一个错误。