提问人:Nitesh 提问时间:6/6/2023 最后编辑:Mojtaba HosseiniNitesh 更新时间:10/30/2023 访问量:34030
如何使用 Xcode 17 在 iOS 14 设备上运行
How to run on iOS 17 Device using Xcode 14
答:
部署到 iOS 17 设备的一种方法是使用 Xcode 15。
评论
截至目前,没有适用于 iOS 17 的设备支持文件。
在 iOS 17+ 中,我们使用新的设备堆栈 (CoreDevice) 与设备进行通信。使用此新设备堆栈时,每个平台都有一个 DDI(而不是每个 OS 版本)。相同的设备堆栈将在系统上的所有 Xcode 版本之间共享,安装较新版本的 Xcode 将更新 CoreDevice 及其 DDI(就像 CoreSimulator 的更新方式一样,如果您熟悉的话)。
这实际上意味着您现在可以通过一种受支持的方式来更新系统上的设备堆栈,以支持较新的目标操作系统设备。借助 CoreDevice,您应该能够使用 Xcode 15 调试运行未来 iOS 版本的设备。这可能需要先安装更新的 Xcode 才能安装更新的 CoreDevice 和 DDI,因此请记住这一点。
当然,这也意味着有一个暂时的打嗝,旧的不受支持的路径不起作用,但好消息是,未来你将有一种受支持的方式,开箱即用,无需修改你的 Xcode.app。
看看这个苹果论坛,
建议他们仅使用 Xcode 15 测试版。
好消息是,此后我们将来不需要更新设备支持文件,如果我们安装最新版本的 XCode :)它将默认工作
Apple 开发者论坛官方表示,即使您在过去可能有效,您尝试执行的操作也不受支持。但是,如果您想探索非官方或黑客风格的方法,您可以考虑以下几点:
- 启动适用于 iOS 17 的 Corellium 虚拟 iPhone(默认情况下已越狱)
- 设置 USBFlux 以将设备作为虚拟连接的本地 USB 设备远程传递到本地 Xcode 14。
- 调试附加到命名进程并与之交互。
查看 https://support.corellium.com/features/connect/usbflux
有人假设您无法升级到 Xcode 15 - 这是一个正确的假设吗?如果您处于该位置,一种间接方法是改进应用程序中的日志记录,然后查看在 iOS 17 上安装它是否显示任何问题,随后可能会从可从控制台应用程序查看的日志进行调试。
另一种方法是,如果你的 App 是模块化的,并且只有一个方面出现故障,你可以创建一个新 App,只包含相关的相关模块,然后在本地使用 Xcode 15,并使用它来调试你的问题。
这有点复杂,但我发现在 iOS17 设备上测试使用 Xcode 14 构建的应用程序的唯一方法 - 同时仍然能够调试如下:
- 使用 Xcode 14 存档应用程序 - 选择“任何 iOS 设备”运行目标。
- 在管理器中,选择存档,然后选择“在查找器中显示”。
- 使用“显示包内容”展开存档,然后打开“产品 -> 应用程序”以查看应用程序 - 稍后会用到它。
- 关闭 Xcode 14,然后打开 Xcode 15。
- 在 Xcode 15 的“设备和模拟器”中,选择您的 iOS17 设备。
- 点击“已安装的应用程序”底部的“+”按钮,然后从步骤#3中删除应用程序文件。您应该会在“已安装的应用程序”列表中看到应用程序更新的内部版本号。
- 您现在可以在 iOS17 设备上手动运行从 Xcode 14 构建的应用程序 - 不使用 Xcode 15 中的“Cmd+R”,否则您将替换刚刚安装的应用程序。
- 仍然在 Xcode 15 中,使用“调试 -> 附加到进程”附加到应用程序的进程 - 断点似乎不起作用,但您可以打印到日志中。
当然,您也可以通过 TestFlight 而不是第 1-6 步交付应用程序,然后使用 Xcode 15 和 iOS17 设备附加到应用程序的进程。
我在 Apple Dev Forum 上的原始答案是:https://developer.apple.com/forums/thread/730947?answerId=756651022#756651022
评论
在终端中运行:
defaults write com.apple.dt.Xcode DVTEnableCoreDevice enabled
然后重新启动 Xcode 14,iOS 17 设备将显示在 Xcode 中,如下所示,您可以像往常一样运行和调试应用程序。(您可能需要转到设备和模拟器来配对/信任设备)
我与 Xcode 14 一起安装了 Xcode 15 测试版,我不确定是否需要。
评论
在 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。此安装将自动获取必要的文件,方便地在您的系统上共享。
要了解其背后的基本概念,请查看链接。
这是一种解决方法,可以在较旧的 macOS 版本上支持 Xcode 17.x 中的 iOS 14.x。
先决条件:
- 您应该已安装 Xcode 14.x。(此 Xcode 版本取决于 macOS 支持的最新 Xcode 版本。就我而言,我正在使用 Xcode 14.3.1 和 macOS Ventura 13.1。您可以下载相应的 Xcode 版本根据您的要求发布。
- 您还需要 Xcode 15.x 才能在 iOS 17.x 上运行应用程序 装置。
请按照下列步骤操作:
- 首先清理派生数据。
- 退出 Xcode。
- 打开终端。
- 在 Finder 的“应用程序”文件夹中找到您的 Xcode 应用程序。
- 将 Xcode 15.x App 从“访达”拖到“终端”中。拖动后,将 /Contents/MacOS/Xcode 添加到路径中。完整的命令应如下所示:/Applications/Xcode-15.0.1.app/Contents/MacOS/Xcode。
- 按 Enter 键运行命令。如果您在终端中遇到任何错误,请重复步骤 5。
- 按照 Xcode 协议和 iOS 17.0 安装步骤操作。您会注意到,当您打开此版本的 Xcode (Xcode 14.x) 时,终端也会打开。不要关闭终端,因为它也会关闭 Xcode
- 现在,打开您的 Xcode 14.x,选择您的 iOS 设备,然后运行您的项目。它应该起作用。
此解决方案已经过测试,并确认可在以下环境中工作:
- macOS Ventura 13.1 (22C65)
- Xcode 14.3.1(我的所有项目都使用此 Xcode 版本)
- Xcode 15.0.1(用于在我的机器上安装 iOS 17.0)
有关更多详细信息,您还可以参考我的 Medium 文章 在较旧的 macOS 版本上在 Xcode 14.x 中支持 iOS 17。
我希望这会有所帮助!
当更新新的 Xcode 命令行工具默认值时,写入 com.apple.dt.Xcode DVTEnableCoreDevice 启用可能不起作用。在再次启用运行之前使用 disbled。
- 关闭 Xcode
- 打开终端并运行 2 个命令行
默认写入 com.apple.dt.Xcode DVTEnableCoreDevice disbled
...和。。。
默认写入 com.apple.dt.Xcode DVTEnableCoreDevice enabled
评论