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

How to run on iOS 17 Device using Xcode 14

提问人:Nitesh 提问时间:6/6/2023 最后编辑:Mojtaba HosseiniNitesh 更新时间:10/30/2023 访问量:34030

问:

Xcode 15 测试版不附带适用于 iOS 17 的设备支持文件。我们在 Xcode 17 上运行 iOS 14 设备的任何其他方式

iOS Xcode,Xcode15,iOS17

评论

1赞 ephb 6/21/2023
这里对你来说最重要的是什么?您是只想部署还是同时连接和调试?
2赞 EhsanR 9/26/2023
我有 xcode 14.2 。我的Mac是2015年,无法升级xcode。我的 iPhone 是 IOS 17。我该怎么办?我应该买一台新 Mac 吗?
0赞 Nitesh 9/27/2023
@EhsanR 是的,升级到新Mac。 截至目前,我们还没有发现任何其他方法。您必须将 Xcode 15 beta 与 Xcode 14 一起安装才能在 Xcode 14 上进行调试

答:

-5赞 Myke Savage 6/8/2023 #1

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

评论

1赞 HangarRash 6/20/2023
为什么有这么多反对票?这实际上是一个有效的答案。
0赞 Faisal Memon 6/24/2023
我看到很多对这些答案投了反对票;这让我很惊讶。我建议改进一下,说“唯一官方支持的方式......".
13赞 Ben Thomas 7/19/2023
因为它不是问题的答案。
0赞 Emrah Akgül 7/21/2023
Xcode 15 尚未上线,即使它是上线的,也可能是他们没有为该问题提供任何解决方案。在没有实际尝试的情况下建议使用 Xcode 15 是没有意义的。
4赞 AJR 6/16/2023 #2

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

在 iOS 17+ 中,我们使用新的设备堆栈 (CoreDevice) 与设备进行通信。使用此新设备堆栈时,每个平台都有一个 DDI(而不是每个 OS 版本)。相同的设备堆栈将在系统上的所有 Xcode 版本之间共享,安装较新版本的 Xcode 将更新 CoreDevice 及其 DDI(就像 CoreSimulator 的更新方式一样,如果您熟悉的话)。

这实际上意味着您现在可以通过一种受支持的方式来更新系统上的设备堆栈,以支持较新的目标操作系统设备。借助 CoreDevice,您应该能够使用 Xcode 15 调试运行未来 iOS 版本的设备。这可能需要先安装更新的 Xcode 才能安装更新的 CoreDevice 和 DDI,因此请记住这一点。

当然,这也意味着有一个暂时的打嗝,旧的不受支持的路径不起作用,但好消息是,未来你将有一种受支持的方式,开箱即用,无需修改你的 Xcode.app。

看看这个苹果论坛,

iOS17设备支持苹果回复

建议他们仅使用 Xcode 15 测试版。

好消息是,此后我们将来不需要更新设备支持文件,如果我们安装最新版本的 XCode :)它将默认工作

0赞 Faisal Memon 6/21/2023 #3

Apple 开发者论坛官方表示,即使您在过去可能有效,您尝试执行的操作也不受支持。但是,如果您想探索非官方或黑客风格的方法,您可以考虑以下几点:

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

查看 https://support.corellium.com/features/connect/usbflux

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

另一种方法是,如果你的 App 是模块化的,并且只有一个方面出现故障,你可以创建一个新 App,只包含相关的相关模块,然后在本地使用 Xcode 15,并使用它来调试你的问题。

7赞 siburb 6/21/2023 #4

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

  1. 使用 Xcode 14 存档应用程序 - 选择“任何 iOS 设备”运行目标。
  2. 在管理器中,选择存档,然后选择“在查找器中显示”。
  3. 使用“显示包内容”展开存档,然后打开“产品 -> 应用程序”以查看应用程序 - 稍后会用到它。
  4. 关闭 Xcode 14,然后打开 Xcode 15。
  5. 在 Xcode 15 的“设备和模拟器”中,选择您的 iOS17 设备。
  6. 点击“已安装的应用程序”底部的“+”按钮,然后从步骤#3中删除应用程序文件。您应该会在“已安装的应用程序”列表中看到应用程序更新的内部版本号。
  7. 您现在可以在 iOS17 设备上手动运行从 Xcode 14 构建的应用程序 - 不使用 Xcode 15 中的“Cmd+R”,否则您将替换刚刚安装的应用程序。
  8. 仍然在 Xcode 15 中,使用“调试 -> 附加到进程”附加到应用程序的进程 - 断点似乎不起作用,但您可以打印到日志中。

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

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

评论

0赞 siburb 7/12/2023
虽然我在这里的答案在技术上确实有效,但现在@Jonathan有一个更好的解决方案。下面。
87赞 Jonathan. 7/5/2023 #5

在终端中运行:

defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled

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

我与 Xcode 14 一起安装了 Xcode 15 测试版,我不确定是否需要。

enter image description here

评论

4赞 Jonathan. 7/14/2023
CoreDevice 是 Xcode 与从 Xcode 15 开始的设备进行通信的新方式。我认为苹果只是在 Xcode 14 中对其进行内部测试,并公开禁用了它。所以这个标志只是实现了这一点。到目前为止,我没有任何缺点
2赞 Nitesh 7/20/2023
@YashJadhav macOS 终端
6赞 marceloamx 7/20/2023
这就是解决方案!但请记住,您需要 Xcode14.3。在 Xcode14.1 中,这不起作用。
5赞 Hongbo Liu 8/3/2023
它有效,我正在使用 Xcode14.3.1
3赞 JCraine 10/12/2023
我在 Monterey 12.7 上运行 XCode 14.3 和编辑过的 info.plist。此时将显示 CoreDevice,但收到错误:“(CoreDevice) 具有未知或未报告的体系结构。请使用其他设备。谢谢蒂姆。
5赞 Abdullah 9/29/2023 #6

在 iOS 17(或 macOS 14、watchOS 10、tvOS 17、DriverKit 23 或 visionOS 1)设备上部署应用时,有一种官方认可的方法:利用 Xcode 15。

iOS 17 需要 Xcode 15 才能部署

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

defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled

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

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

0赞 chirag05k 10/30/2023 #7

这是一种解决方法,可以在较旧的 macOS 版本上支持 Xcode 17.x 中的 iOS 14.x。

先决条件:

  1. 您应该已安装 Xcode 14.x。(此 Xcode 版本取决于 macOS 支持的最新 Xcode 版本。就我而言,我正在使用 Xcode 14.3.1 和 macOS Ventura 13.1。您可以下载相应的 Xcode 版本根据您的要求发布。
  2. 您还需要 Xcode 15.x 才能在 iOS 17.x 上运行应用程序 装置。

请按照下列步骤操作:

  1. 首先清理派生数据。
  2. 退出 Xcode。
  3. 打开终端。
  4. 在 Finder 的“应用程序”文件夹中找到您的 Xcode 应用程序。
  5. 将 Xcode 15.x App 从“访达”拖到“终端”中。拖动后,将 /Contents/MacOS/Xcode 添加到路径中。完整的命令应如下所示:/Applications/Xcode-15.0.1.app/Contents/MacOS/Xcode。

enter image description here

  1. 按 Enter 键运行命令。如果您在终端中遇到任何错误,请重复步骤 5

enter image description here (错误的参考)

  1. 按照 Xcode 协议和 iOS 17.0 安装步骤操作。您会注意到,当您打开此版本的 Xcode (Xcode 14.x) 时,终端也会打开。不要关闭终端,因为它也会关闭 Xcode

enter image description here

  1. 现在,打开您的 Xcode 14.x,选择您的 iOS 设备,然后运行您的项目。它应该起作用。

enter image description here

此解决方案已经过测试,并确认可在以下环境中工作:

  1. macOS Ventura 13.1 (22C65)
  2. Xcode 14.3.1(我的所有项目都使用此 Xcode 版本)
  3. Xcode 15.0.1(用于在我的机器上安装 iOS 17.0)

有关更多详细信息,您还可以参考我的 Medium 文章 在较旧的 macOS 版本上在 Xcode 14.x 中支持 iOS 17

我希望这会有所帮助!

0赞 Ks 2000 12/18/2023 #8

当更新新的 Xcode 命令行工具默认值时,写入 com.apple.dt.Xcode DVTEnableCoreDevice 启用可能不起作用。在再次启用运行之前使用 disbled。

  1. 关闭 Xcode
  2. 打开终端并运行 2 个命令行

默认写入 com.apple.dt.Xcode DVTEnableCoreDevice disbled

...和。。。

默认写入 com.apple.dt.Xcode DVTEnableCoreDevice enabled