如何使用 Xcode 14 运行 iOS 17 设备

回答 6 浏览 2万 2023-06-06

Xcode 15 beta 不附带 iOS 17 的设备支持文件。我们可以通过任何其他方式在 Xcode 14 上运行 iOS 17 设备

Nitesh 提问于2023-06-06
什么对你来说很重要?你只想部署还是还想连接和调试?ephb 2023-06-20
我有 xcode 14.2 。我的Mac是2015年的,无法升级xcode。我的 iPhone 是 IOS 17,我该怎么办?我应该买一台新 Mac 吗?EhsanR 2023-09-26
@EhsanR 是的,升级到新的 Mac。到目前为止我们还没有发现任何其他方法。您必须将 Xcode 15 beta 与 Xcode 14 一起安装才能在 Xcode 14 上进行调试Nitesh 2023-09-27
6 个回答
#1楼 已采纳
得票数 56

在终端中运行:

defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled

然后重新启动 Xcode 14,iOS 17 设备将显示在 Xcode 中,如下所示,您可以像往常一样运行和调试应用程序。 (您可能需要转到设备和模拟器来配对/信任设备)

我已将 Xcode 15 beta 与 Xcode 14 一起安装,我不确定是否需要这样做。

enter image description here

Jonathan. 提问于2023-07-05
Jonathan. 修改于2023-07-06
这是太棒了!你知道这是否是新事物吗?启用它有什么缺点吗?siburb 2023-07-12
CoreDevice 是 Xcode 与从 Xcode 15 开始的设备通信的新方式。我认为 Apple 只是在 Xcode 14 中内部测试它并公开禁用它。所以这个标志就可以实现这一点。到目前为止我还没有遇到任何缺点Jonathan. 2023-07-13
@YashJadhav macOS 终端Nitesh 2023-07-19
这就是解决方案!但请记住,您需要 Xcode 14.3。对于 Xcode 14.1,这不起作用。marceloamx 2023-07-20
它有效,我使用的是 Xcode14.3.1Hongbo Liu 2023-08-03
#2楼
得票数 6

这有点复杂,但我发现在 iOS17 设备上测试使用 Xcode 14 构建的应用程序的唯一方法 - 同时仍然能够进行调试,如下所示:

  1. 使用 Xcode 14 存档应用程序 - 选择“Any iOS Device”运行目标。
  2. 在Organizer中,选择archive,然后选择“Show in finder”。
  3. 使用“Show Package Contents”展开存档,然后打开“Products -> Applications”以查看该应用程序 - 稍后将需要它。
  4. 关闭 Xcode 14,然后打开 Xcode 15。
  5. 在 Xcode 15 的“Devices and Simulators”中,选择您的 iOS17 设备。
  6. 点击“Installed Apps”底部的“+”按钮,然后从步骤 #3 中删除应用程序文件。您应该在“Installed Apps”列表中看到应用程序更新的内部版本号。
  7. 现在,您可以在 iOS 17 设备上手动运行 Xcode 14 中的应用程序构建 - 不要使用 Xcode 15 中的“Cmd+R”,否则您将替换刚刚安装的应用程序。
  8. 仍然在 Xcode 15 中,使用“Debug -> Attach to Process”附加到应用程序的进程 - 断点似乎不起作用,但您可以打印到日志。

当然,您也可以通过 TestFlight 交付应用程序,而不是执行步骤 1-6,然后使用 Xcode 15 和 iOS17 设备附加到应用程序的进程。

我在 Apple Dev Forum 上的原始回答: https://developer.apple.com/forums/thread/730947?answerId =756651022#756651022

siburb 提问于2023-06-21
虽然我在这里的答案在技术上可行,但现在 @Jonathan 提供了更好的解决方案。以下。siburb 2023-07-12
#3楼
得票数 3

截至目前,还没有适用于 iOS 17 的设备支持文件。

With iOS 17+, we are using a new device stack (CoreDevice) to communicate with devices. With this new device stack, there is one DDI per platform (as opposed to per OS release). This same device stack will be shared across all versions of Xcode on your system, and installing a newer version of Xcode will update CoreDevice and its DDIs (just like how CoreSimulator is updated if you are familiar with that).

This effectively means that you now have a supported way of updating the device stack on your system to support newer target OS devices. With CoreDevice, you should be able to debug devices running future versions of iOS using Xcode 15. This may require first installing a newer Xcode in order to install newer CoreDevice and DDIs, so keep that in mind.

Of course, this also means there is a temporary hiccup in which the old unsupported path doesn't work, but the good news is that future-you will have a supported way of doing this which works out-of-the-box, no need to modify your Xcode.app.

看看这个苹果论坛,

iOS17设备支持苹果回复

建议他们仅使用 Xcode 15 beta。

Good news is, hereafter we don't need to update device support files in the future it will work by default if we install the latest version of XCode :)

AJR 提问于2023-06-16
AJR 修改于2023-06-23
#4楼
得票数 0

当涉及到在 iOS 17(或 macOS 14、watchOS 10、tvOS 17、DriverKit 23 或 VisionOS 1)设备上部署应用程序时,有一种官方认可的方法:使用 Xcode 15。

iOS 17 requires Xcode 15 for deployment

对于那些喜欢坚持使用较旧 Xcode 版本(即 Xcode 14.3.1 或更早版本)的人,请不要担心。您仍然可以通过使用简单的命令启用 CoreDevice 来使其工作:

defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled

执行这些命令后,快速重新启动 Xcode 将使一切顺利运行。但是,如果您在设备上仍然遇到部署错误,解决方案在于安装 Xcode 15。此安装将自动获取必要的文件,并方便地在您的系统上共享。

要了解其背后的基本概念,请访问 链接。

Abdullah 提问于2023-09-29
Abdullah 修改于2023-09-29
#5楼
得票数 -1

苹果开发者论坛正式表示,即使它在过去可能有效,也不支持您尝试做的事情。但如果您想探索非官方或黑客风格的方法,您可以考虑以下方法:

  1. 启动适用于 iOS 17 的 Corellium Virtual iPhone(默认情况下已越狱)
  2. 设置 USBFlux 以将设备作为虚拟连接的本地 USB 设备远程传递到本地 Xcode 14。
  3. 调试附加到指定进程并与其交互。

请参阅https://support.corellium.com/features/connect/usbflux

有人假设您无法升级到 Xcode 15 - 这是一个正确的假设吗?如果您处于这种情况,间接方法是改进应用程序内的日志记录,然后查看在 iOS 17 上安装它是否会显示任何问题,随后可以从控制台应用程序中查看的日志进行调试。

另一种方法是,如果您的应用程序是模块化的并且只有一个方面失败,您可以创建一个新应用程序,仅合并相关的相关模块,然后在本地使用 Xcode 15,并使用它来调试您的问题。

Faisal Memon 提问于2023-06-20
Faisal Memon 修改于2023-06-21
#6楼
得票数 -6

部署到 iOS 17 设备的一种方法是使用 Xcode 15。

Myke Savage 提问于2023-06-08
bhagyas 修改于2023-06-30
为什么有这么多反对票?这实际上是一个有效的答案。HangarRash 2023-06-20
我看到很多人对这些答案投了反对票;这让我很惊讶。我建议改进说“唯一官方支持的方式......”。Faisal Memon 2023-06-24
因为这不是问题的答案。Ben Thomas 2023-07-19
Xcode 15 尚未上线,即使已上线,他们也可能没有为该问题提供任何解决方案。在没有实际尝试的情况下建议使用 Xcode 15 是没有意义的。Emrah Akgül 2023-07-21