如何获取iOS模拟器所有应用Bundle ID并自动化卸载指定应用?
获取iOS模拟器已安装应用的Bundle ID并自动化卸载WebDriverAgent
嘿,这就帮你搞定这个问题!下面分两部分给你详细说明:
一、获取已安装应用的Bundle ID
要查看iOS模拟器上的所有应用及其Bundle ID,用simctl命令就可以轻松搞定:
查看当前启动模拟器的所有应用:
运行这个命令,会输出JSON格式的应用列表,每个条目里包含name(应用名称)和bundle_id(Bundle标识符):xcrun simctl listapps booted快速定位WebDriverAgent的Bundle ID:
如果只想找WebDriverAgent,不用翻整个列表,直接用过滤命令:# 不区分大小写查找,输出包含WebDriverAgent的条目 xcrun simctl listapps booted | grep -i webdriveragent要是你安装了
jq(可以用brew install jq安装),还能更精准地直接提取Bundle ID:xcrun simctl listapps booted | jq -r '.[] | select(.name | test("WebDriverAgent"; "i")) | .bundle_id'
二、自动化卸载WebDriverAgent的脚本
既然要自动化操作,写个简单的bash脚本就能一键完成。下面的脚本会自动检查模拟器状态、查找Bundle ID并执行卸载:
#!/bin/bash # 先检查有没有启动的模拟器 if ! xcrun simctl list devices booted | grep -q "Booted"; then echo "哎,先启动一个iOS模拟器再运行脚本哦!" exit 1 fi # 提取WebDriverAgent的Bundle ID(这里用grep+cut的方式,不需要额外工具) WDA_BUNDLE_ID=$(xcrun simctl listapps booted | grep -o '"bundle_id": "[^"]*"' | grep -i webdriveragent | cut -d '"' -f4) if [ -n "$WDA_BUNDLE_ID" ]; then echo "找到WebDriverAgent啦,Bundle ID是:$WDA_BUNDLE_ID" echo "开始卸载..." xcrun simctl uninstall booted "$WDA_BUNDLE_ID" echo "搞定!卸载完成~" else echo "当前启动的模拟器里没找到WebDriverAgent应用哦" fi
使用步骤:
- 把上面的代码保存成
uninstall_wda.sh文件 - 给文件加执行权限:
chmod +x uninstall_wda.sh - 运行脚本:
./uninstall_wda.sh
小提示
- 如果要卸载特定模拟器上的WDA(不是当前启动的),把命令里的
booted换成对应的模拟器UDID就行,UDID可以通过xcrun simctl list devices查到。 - WebDriverAgent的Bundle ID可能因安装方式不同略有差异,比如
io.appium.WebDriverAgentRunner或者com.facebook.WebDriverAgent,所以用模糊匹配的方式更稳妥。
内容的提问来源于stack exchange,提问作者the_prole
相关产品推荐
相关产品推荐

