如何检查iPhone模拟器的设备ID?

64

我想要检查我的iPhone模拟器应用程序的设备标识符,但不使用代码库。我知道如何使用代码库和UIDevice实例来完成此操作。

是否有一种不使用代码库的方法来查找设备标识符?

9个回答

88

编辑:查看基于CoreSimulator的模拟器的UDID的更新方法,请参见其他答案。

  1. instruments -s devices
  2. xcrun simctl list
  3. 从Xcode中:窗口->设备和模拟器->模拟器。 标识符 值即为UDID。

来自2011年:

iPhone模拟器UDID对于每个已安装的实例是否唯一?

这篇回答应该是你想要的。在你的Mac上查看系统概要文件,就可以找到ID。我刚在我的电脑上测试,ID匹配。

这是您可以输入的确切终端命令以查看它:

system_profiler SPHardwareDataType

6
我有点困惑这里的终端命令。它给我的是我的 Mac 设备 ID,而不是模拟器的 ID。另外,它怎么会根据我使用的模拟器给出不同的 ID 呢?我想知道 ~/Library/Developer/CoreSimulator/Devices/[ID] 中设备路径的 ID。这个答案对我有用:https://dev59.com/qGw05IYBdhLWcg3w6F8w#42649929。 - Liron Yahdav
1
当这个答案在2011年被添加时,iPhone模拟器的设备ID与Mac的设备ID是相同的。模拟器按iOS版本存储在一个文件夹中,但它们都非常相似。你没有现在在Xcode中存在的模拟器面板。从那时起,模拟器已经重构并移动到新的“CoreSimulator”文件夹结构中,可以创建多个不同的模拟器,每个模拟器都有自己的UUID。 - user244343
7
看起来这个回答不应再被标记为答案了。 - Liron Yahdav
2
这个答案已经不正确了,更新一下或者接受其他答案会更好吧?@Mrunal - Tom
回答已过时。 - Max MacLeod
显示剩余3条评论

68

通常情况下,有一个Xcode终端工具可以做到这一点(是Xcode工具的一部分) 请参阅xcrun手册

xcrun simctl list | egrep '(Booted)'

列出所有已启动的模拟器(可能有多个) (删除 | egrep '(Booted)' 可以查看全部模拟器)。

UIID 的结果类似于:

 iPhone 6 Plus (AAAABD40-9DE6-44B7-A4EA-B34ABCDEFCA6) (Booted)

您可以在Mac上查找〜/ Library / Developer / CoreSimulator / Devices中的文件夹,并查找特定模拟器的所有“物品”


这不是设备ID。 - gutte
苹果公司明显区分设备和模拟器(参见 Xcode > 窗口 > 设备和模拟器 [设备|模拟器])。 上述为“模拟器标识符”。 由于iOS不再提供“设备”ID,因此这是您能够得到的最好实用方法,以便调查模拟器的资源和状态。(我刚刚解释了命令行方式) - TiBooX
链接失效,请修复。 - iSpain17
可以工作。我希望这个命令像instruments -s devices一样显示在模拟器上运行的操作系统版本。这是一个权衡。 - Ganesh S
@GaneshS 如果您看到我的新答案,它会为您提供操作系统和ID。 - Eric Wiener

66

试试这个

instruments -s devices

看起来像是 xcrun simctl list 的简化版本。如果您需要更多信息,例如有关每个模拟器实例的“启动”状态(打开窗口),我建议使用 xcrun simctrl。我编写了一个不错的 AppleScript,只需将它们重置为出厂状态(包括 Keychain)。 - TiBooX
这不是100%的解决方案。它显示所有带有uuid的模拟器设备,但它并不会告诉你哪个设备正在启动。TiBooX在下面的答案中展示了哪个设备正在启动,但它仍然无法告诉你模拟器设备上运行的操作系统。 - Ganesh S
谢谢分享。对我有用 :) - Anurag Sharma
2
运行 instruments -s devices 命令,它会提示 instruments 已被弃用,建议使用 'xcrun xctrace' --> xcrun xctrace list devices 命令。 - Bruno Bieri

27

您可以仅搜索已启动的设备并获取iOS版本(不同于@TiBooX的答案,后者仅显示活动设备)。 您也不需要使用 grep ,只需使用内置功能 xcrun

$ xcrun simctl list 'devices' 'booted'

将打印出类似于以下的内容:

== Devices ==
-- iOS 10.3 --
-- iOS 11.4 --
-- iOS 12.4 --
-- iOS 13.4 --
    iPhone 11 Pro (A5DEEA78-1E82-472E-B7CC-FFD27741CDA2) (Booted)
-- tvOS 13.4 --
-- watchOS 6.2 --

我建议将以下别名添加到您的.bashrc.zshrc文件中:

# Get the active simulator with
alias active-sims="xcrun simctl list 'devices' 'booted'"

这样你就可以每次运行 active-sims,而无需记住整条命令。


21
您还可以检索相同的UDID,标记为“标识符”。在Xcode窗口菜单中,选择“设备和模拟器”: 在这里输入图片描述 然后选择模拟器标签页: 在这里输入图片描述

11

Xcode -> 窗口 -> 设备和模拟器 -> 选择您想要标识符的设备(在详细信息中可以看到标识符)


1
"

"instruments"已被弃用,请使用以下命令:

xctrace list devices

"

0

有另一种方法可以不使用命令行,在此plist文件~/Library/Developer/CoreSimulator/Devices/device_set.plist中,它列出了所有带UUID的设备。


0

您可以通过导航到主页/设置/通用/关于/序列号来在模拟器中直观地查看值,该值与您的桌面机器相同。您可以通过导航到Apple/关于本机并在OS X下点击OS版本号来验证此操作(显示将更改以指示您的UDID - 您可能需要单击两次)。


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