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

48
Xcode 15 beta没有包含适用于iOS 17的设备支持文件。有其他方法可以在Xcode 14上运行iOS 17设备吗?

1
在这里对你来说什么是重要的?你只想部署还是也想连接和调试? - ephb
2
我有Xcode 14.2。我的Mac是2015年的,无法升级Xcode。我的iPhone是iOS 17。我该怎么办?我应该买一台新的Mac吗? - undefined
@EhsanR 是的,升级到新的 Mac。目前我们还没有发现其他方法。您必须安装 Xcode 15 beta 并行于 Xcode 14,以便在 Xcode 14 上进行调试。 - undefined
8个回答

82
在终端中运行:
defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled

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

我同时安装了Xcode 15 beta和Xcode 14,我不确定是否需要这样做。

enter image description here


3
CoreDevice是Xcode 15中与设备通信的新方式。我认为苹果在Xcode 14中只是在内部进行测试,并且公开禁用了它。所以这个标志只是启用了它。到目前为止,我还没有遇到任何问题。 - Jonathan.
5
这就是解决方案!但请记住,您需要Xcode14.3。使用Xcode14.1无法实现此功能。 - marceloamx
4
它可以运行,我正在使用Xcode14.3.1。 - Hongbo Liu
2
我想为一台iOS 17设备进行开发。我只能使用Xcode 14.2。我会遇到问题吗? - undefined
3
我使用的是 Monterey 12.7 版本,运行着 XCode 14.3,并且修改了 info.plist 文件。CoreDevice 是可见的,但是出现了一个错误:“(CoreDevice) 具有未知或未报告的架构。请使用其他设备。”谢谢 Tim。 - undefined
显示剩余27条评论

7
这个过程有点复杂,但是我找到了一种方法来测试使用Xcode 14构建的应用程序,在iOS17设备上进行调试。具体步骤如下:
1. 使用Xcode 14将应用程序存档 - 选择“任意iOS设备”运行目标。 2. 在组织器中,选择存档,并点击“在Finder中显示”。 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开发者论坛上的原始回答在这里: https://developer.apple.com/forums/thread/730947?answerId=756651022#756651022

虽然我的回答在技术上是有效的,但是@Jonathan提供了一个更好的解决方案,请参考下面的内容。 - siburb
虽然我的回答在技术上是有效的,但是@Jonathan在下面提供了一个更好的解决方案。 - undefined

5

说到在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。这个安装将自动获取所需的文件,并方便地在您的系统上共享。
要了解其基本概念,请查看链接

4

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

从iOS 17+开始,我们使用了一个新的设备堆栈(CoreDevice)来与设备进行通信。通过这个新的设备堆栈,每个平台只有一个DDI(与每个操作系统版本相对应)。这个相同的设备堆栈将在您系统上的所有Xcode版本中共享,并且安装更新版本的Xcode将会更新CoreDevice及其DDIs(就像您熟悉的CoreSimulator一样)。

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

当然,这也意味着旧的不受支持的路径暂时无法使用,但好消息是未来您将拥有一种支持的方法来完成此操作,而无需修改您的Xcode.app。

请查看这个苹果论坛:

iOS17设备支持苹果回复

建议仅使用Xcode 15 beta。

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


0
以下是一个对我来说在旧版本的 macOS 上支持 Xcode 14.x 中的 iOS 17.x 的解决方法。
先决条件: 1. 您应该已经安装了 Xcode 14.x。(这个 Xcode 版本取决于您的 macOS 支持的最新 Xcode 版本。在我的情况下,我正在使用 Xcode 14.3.1 和 macOS Ventura 13.1。您可以根据您的需求从 Xcode Releases 下载适当的 Xcode 版本。) 2. 您还需要 Xcode 15.x 来在 iOS 17.x 设备上运行应用程序。
按照以下步骤进行操作: 1. 首先清理派生数据。 2. 退出 Xcode。 3. 打开终端。 4. 在 Finder 的应用程序文件夹中找到您的 Xcode 应用程序。 5. 将 Finder 中的 Xcode 15.x 应用程序拖动到终端中。拖动后,在路径中添加 /Contents/MacOS/Xcode。完整的命令应该类似于这样:/Applications/Xcode-15.0.1.app/Contents/MacOS/Xcode。

enter image description here

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

enter image description here (错误的参考)

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

enter image description here

现在,打开你的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
苹果开发者论坛正式表示,即使过去可能有效,但他们不支持您尝试的操作。但是,如果您想探索非官方或黑客风格的方法,可以考虑以下几点:
1. 启动一个Corellium虚拟iPhone(默认情况下已越狱),用于iOS 17。 2. 设置USBFlux,将设备远程传递为本地Xcode 14连接的虚拟USB设备。 3. 调试附加到指定进程并与之交互。
请参阅https://support.corellium.com/features/connect/usbflux 假设您无法升级到Xcode 15 - 这个假设正确吗?如果是这种情况,一种间接的方法是改进应用程序中的日志记录,然后查看在iOS 17上安装后是否出现任何问题,随后可以从控制台应用程序中查看日志进行调试。
另一种方法是,如果您的应用程序是模块化的,并且只有其中一个方面失败,您可以创建一个新的应用程序,仅包含相关的模块,并在本地使用Xcode 15使其正常工作,然后使用该应用程序来调试您的问题。

-3

我花了整个星期研究了如何安装新的beta模拟器。

你应该勾选所有需要的模拟器复选框[像这样][1],然后下载到 ~/Downloads(当前用户的默认下载目录)

↑这部分不必要。不用管它。只需下载 Xcode 15 Beta xip 文件。

在解压缩 Xcode_15_Beta.xip 后,在终端中执行以下命令。(不要使用sudo)

/path/to/Xcode-beta.app/Contents/Developer/usr/bin/xcodebuild -downloadAllPlatforms

此命令可能需要您允许 Xcode 15 Beta 对 ~/Downloads 的文件/文件夹访问权限。请允许。

在安装这些模拟器后,我可以使用 iOS 17.0 Beta,并选择 Xcode 14.2 作为 $DEVELOPER_DIR


3
关于在Xcode 14上运行iOS 17真实设备的问题 - Nitesh
你的回答可以通过提供更多支持信息来改进。请[编辑]以添加更多细节,例如引文或文献资料,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community

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

1
为什么会有这么多踩?这实际上是一个有效的回答。 - HangarRash
我看到这些答案上有很多负面评价,这让我感到惊讶。我建议改进一下,可以说“唯一官方支持的方式是……”。 - Faisal Memon
12
因为这不是对问题的回答。 - undefined
6
因为这不是对问题的回答。 - Ben Thomas
Xcode 15目前尚未发布,即使它已经发布了,也可能没有提供任何解决方案来解决那个问题。在没有实际尝试之前,建议使用Xcode 15是没有意义的。 - Emrah Akgül

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接