如何通过命令行脚本查找所有已连接设备的设备UUID?

76

我正在iOS设备上运行自动化测试。 我不想始终连接所有设备。 因此,我想查找所有设备的设备ID,然后仅在连接了该设备时开始构建、部署和运行测试。

所以我的问题是,如何通过shell脚本找到所有已连接设备的设备uuid?

谢谢!


3
https://github.com/vaskas/udidetect - 0x8badf00d
6个回答

136

编辑:

instruments 命令现在已被弃用, 您应该运行以下命令代替:

xcrun xctrace list devices

之前的回答:

如果您已经安装了Xcode,您可以使用Instruments获取所有已知设备。使用

instruments -s devices

4
输出设备列表以单行格式显示的答案将获得+1。或者,也可以使用ios-deploy -c命令(尽管这不是一种仅适用于苹果设备的解决方案)。 - Vish
1
这个命令还有效吗?根据Xcode文档,instruments -s只是列出可用的模板,这也是我执行上述命令时得到的结果,但那不是设备列表。 - Robert
1
输出列表应包括您的设备列表。 - Quanlong
1
@Quanlong,我们能把这个设备列表保存到一个变量中吗?我需要将其保存在一个变量中,并从列表中搜索设备。我正在使用shell脚本。 - Qadir Hussain
1
如何获取模拟器的UDID以及设备的UDID? - vikramvi
显示剩余4条评论

26

@KKendall的回答为我指明了正确的方向。这是一个只包含单个sed表达式的版本:

system_profiler SPUSBDataType | sed -n -E -e '/(iPhone|iPad)/,/Serial/s/ *Serial Number: *(.+)/\1/p'

1
如何获取模拟器的UDID以及设备的UDID? - vikramvi

21

通过brew命令在Mac OS X上安装ideviceinstaller

brew install ideviceinstaller

然后在终端中运行idevice_id -l即可。


1
此命令还显示未连接的设备,而“instruments -s devices”则显示为(null)[1112314227ead6e1132b9c20efd74412329e77b6]。 - Degard
对我来说没有返回结果。 - Asher

14

我找到了一个类似的问题关于使用多个设备,这是对我有帮助的答案:

 #!/bin/sh
 i=0
 for line in $(system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p' -e '/iPhone/,/Serial/p' | grep "Serial Number:" | awk -F ": " '{print $2}'); do
    UDID=${line}
    echo $UDID
    udid_array[i]=${line}
    i=$(($i+1))
 done

 cnt=${#udid_array[@]}
 for ((i=0;i<cnt;i++)); do
    echo ${udid_array[i]}
 done

1
看起来答案现在不是实际正确的,因为新的苹果设备具有带有“-”的ID,例如00008027-0001713202E8002E,但system_profiler显示没有“-”的ID:序列号:000080270001713202E8002E。 - Degard

8

还可以使用ios-deploy

ios-deploy -c | grep -oE 'Found ([0-9A-Za-z\-]+)' | sed 's/Found //g'

1
这个可以工作,但在某些情况下会包含换行符。添加 " | tr -d '\r\n'" 可以解决这个问题。 - BevTheDev
对我来说,最好在2023年6月进行工作,因为xcrun xctrace list devices出现故障,返回错误的设备。现在我使用ios-deploy -c -t 1 -W -C -j - kraftydevil
对我来说,最好在2023年6月使用,因为xcrun xctrace list devices出现故障,返回错误的设备。现在我使用ios-deploy -c -t 1 -W -C -j - undefined

4
如果您拥有XCode,请前往“Window”>“Devices&Simulators”。在该页面上,任何连接的设备都将显示在您的设备上,以及其他标识符和统计信息。这也将通过WiFi连接到设备。

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