我即将升级到 Xcode 14.3,并除了版本 14.2 之外还安装了该版本,我使用以下命令在这两个版本之间切换
sudo xcode-select -switch /Applications/Xcode_14.X.app
。
当版本 14.2 处于活动状态时,我可以看到已连接的 iOS 设备(iOS 版本 16.4.1)
flutter devices
或 xcrun xcdevice list
。
一旦我切换到版本 14.3,该设备就不再列出,因此我也无法将其定位到我的 IDE IntelliJ 中进行部署(因为有一个类似的命令用于填充设备选择器框)。 有趣的是,我在打开 Xcode 14.3 时看到了 iOS 设备,甚至可以在 Xcode 中将我的 Flutter 应用程序部署到该设备。 我使用最新的稳定 Flutter 版本(3.7.11 和 3.7.12)进行了测试,其中包含使用 Xcode 14.3 的修复。
使用 Xcode 14.3 时,在命令行上列出具有旧 iOS 版本(即 15.7.x)的设备没有任何问题。
有人可以告诉我如何列出该设备并将其用作部署目标吗?
更新3:调用
xcrun xctrace list devices
时,正确列出了iOS 16.4.1的iPhone,因此xcdevice可能存在问题。
我还在苹果开发者论坛上创建了票证,对我来说,这就是无能的证据,三周多后,似乎没有人关心或至少回应这个问题,我绝对不是唯一遇到这个问题的人这个问题。
更新 2:由于 Xcode 14.3 中一切正常,我倾向于说问题出现在命令行工具和 iOS 16.4.x(也许还有 MacOS Ventura)之间。
更新:经过进一步的测试,我可以说这个问题不涉及 Flutter。在启用 XCode 14.3 的情况下调用
/usr/bin/arch -arm64e xcrun xcdevice list --timeout 2
时,我收到以下(很常见)错误:
xcdevice[1473:15359] DVTCoreDeviceEnabledState: DVTCoreDeviceEnabledState_Disabled set via user default (DVTEnableCoreDevice=disabled)
使用 Xcode 14.2,不会显示此错误,并且会列出 iOS 版本 16.4.1 的 iOS 设备。 我使用的是 MacOS Ventura 13.3.1。
在我看来,MacOS 版本、Xcode 14.3 和 iOS 版本 16.4.x 的设备之间存在一些不当行为。
请重新检查 Xcode 命令行工具是否与您当前的 Xcode 版本匹配。如果移动设备在 Xcode 中可见并且
xcrun xctrace
返回已连接设备的空列表 - 问题出在命令行工具中。重新安装适合您的 Xcode 版本的命令行工具。