如何动态获取IOS模拟器设备的UID,然后在该设备上安装
How to dynamically get the UID of the IOS simulator device and then install in that device
如何动态获取IOS模拟器设备的UID,然后将其安装到该设备中。我目前有这个 BASH 脚本来完成这项工作,但是,当我 运行 在另一台机器上编写该代码时,我每次都需要手动更改 ID,这使得自动化变得困难。如何仅通过定义设备类型来获取 UID,例如 IPHONE.8 获取 ID 并使用它来代替
#!/bin/bash
export PATH=/usr/local/bin:$PATH
# define variables
DESTINATION="platform=iOS Simulator,name=iPhone 8,OS=13.4.1"
IPHONE_VERSION_ONE="iPhone-7"
APPDIR="$HOME/Library/Developer/Xcode/DerivedData/"
APP_NAME="In-House-iphonesimulator/test.app"
PHONE_ID_ONE="AB877AA-2178-4C29-BF4F-556456C"
xcrun simctl install $PHONE_ID_ONE $APP_LOCATION || { echo 'Unable to install App to Iphone7' ; exit 1; }
我也把下面的答案放在变量中,但是如何在将它存储在变量中时加上引号?
PHONE_ID="instruments -s devices | grep -m 1 "iPhone 8" | awk -F'[][]' '{print }'"
您可以获得模拟器列表及其 ID :
instruments -s devices
instruments -s devices | grep "iPhone 8" | awk -F'[][]' '{print }'
这是这个命令的作用:
- 列出您的所有 iOS 设备
- 正在搜索
iPhone 8
个结果
- 用方括号拆分字符串并打印第二个标记。
因此您应该只获得 UDID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
如果你的系统中有多个 iPhone8 模拟器,你可以通过在 grep 命令中添加 -m 1
键来限制输出:
instruments -s devices | grep -m 1 "iPhone 8" | awk -F'[][]' '{print }'
只需使用 $()
:
将此命令的结果分配给您的 PHONE_ID_ONE
变量
PHONE_ID="$(instruments -s devices | grep -m 1 'iPhone 8' | awk -F'[][]' '{print }')"
希望对您有所帮助
以 xctrace 为例
xctrace list devices | grep -m 1 "iPhone 12" | awk '{print substr([=10=],length([=10=])-36,36)}'
我已经使用下面的命令来获取启动模拟器的设备 ID。
xcrun simctl list devices | grep "(Booted)" | grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})"
如果有多个设备启动,我们可以通过给定的设备名称获取指定设备的id
xcrun simctl list devices | grep "(Booted)" | grep "iPhone 12" |grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})"
如何动态获取IOS模拟器设备的UID,然后将其安装到该设备中。我目前有这个 BASH 脚本来完成这项工作,但是,当我 运行 在另一台机器上编写该代码时,我每次都需要手动更改 ID,这使得自动化变得困难。如何仅通过定义设备类型来获取 UID,例如 IPHONE.8 获取 ID 并使用它来代替
#!/bin/bash
export PATH=/usr/local/bin:$PATH
# define variables
DESTINATION="platform=iOS Simulator,name=iPhone 8,OS=13.4.1"
IPHONE_VERSION_ONE="iPhone-7"
APPDIR="$HOME/Library/Developer/Xcode/DerivedData/"
APP_NAME="In-House-iphonesimulator/test.app"
PHONE_ID_ONE="AB877AA-2178-4C29-BF4F-556456C"
xcrun simctl install $PHONE_ID_ONE $APP_LOCATION || { echo 'Unable to install App to Iphone7' ; exit 1; }
我也把下面的答案放在变量中,但是如何在将它存储在变量中时加上引号?
PHONE_ID="instruments -s devices | grep -m 1 "iPhone 8" | awk -F'[][]' '{print }'"
您可以获得模拟器列表及其 ID :
instruments -s devices
instruments -s devices | grep "iPhone 8" | awk -F'[][]' '{print }'
这是这个命令的作用:
- 列出您的所有 iOS 设备
- 正在搜索
iPhone 8
个结果 - 用方括号拆分字符串并打印第二个标记。
因此您应该只获得 UDID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
如果你的系统中有多个 iPhone8 模拟器,你可以通过在 grep 命令中添加 -m 1
键来限制输出:
instruments -s devices | grep -m 1 "iPhone 8" | awk -F'[][]' '{print }'
只需使用 $()
:
PHONE_ID_ONE
变量
PHONE_ID="$(instruments -s devices | grep -m 1 'iPhone 8' | awk -F'[][]' '{print }')"
希望对您有所帮助
以 xctrace 为例
xctrace list devices | grep -m 1 "iPhone 12" | awk '{print substr([=10=],length([=10=])-36,36)}'
我已经使用下面的命令来获取启动模拟器的设备 ID。
xcrun simctl list devices | grep "(Booted)" | grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})"
如果有多个设备启动,我们可以通过给定的设备名称获取指定设备的id
xcrun simctl list devices | grep "(Booted)" | grep "iPhone 12" |grep -E -o -i "([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12})"