关于 adb
adb 是一项通过 Android Debug Bridge 操作 Android 设备或模拟器的 Agent 技能。它以截图、执行操作和验证结果的循环推进用户指定的任务,并在设备连接或界面异常时处理相应情况。
主要功能
- 01通过 ADB 检查设备连接
- 02截图并分析界面状态
- 03执行点击、滑动和文本输入
- 04使用 UI dump 获取元素信息
- 05验证操作并处理异常
适用场景
- 01在设备上打开设置并更改选项
- 02在 Android 应用中完成界面操作
- 03遇到弹窗或加载状态时继续任务
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ morphet81/ cheat-sheets --skill adb安装后在 Claude Code 中输入/adb确认已加载。
详细介绍
使用 ADB 命令与 Android 设备或模拟器交互,以完成用户定义的任务。持续执行截图-操作-验证循环,直到任务完成。
用法:
/adb <mission>— 描述你希望在设备上完成的操作(例如,“打开设置并启用深色模式”)
前提条件:
adb必须位于 PATH 中- 必须连接设备或模拟器
说明:
-
验证 ADB 连接:
- 运行
adb devices,确认至少列出一台设备(状态不能是“unauthorized”) - 如果未找到设备,告知用户并停止
- 如果找到多台设备,使用
AskUserQuestion询问要操作哪台设备,然后在后续所有adb命令中传入-s <serial>
- 运行
-
理解任务:
- 将
$ARGUMENTS解析为任务描述 - 如果
$ARGUMENTS为空,使用AskUserQuestion询问用户希望在设备上完成什么操作 - 在心中将任务拆解为预期步骤清单(不要输出,这是用于自行规划的内容)
- 将
-
进入截图-操作-验证循环:
重复以下循环,直到任务完成,或确定任务无法完成:
a) 截取屏幕截图:
mkdir -p .tmp && adb exec-out screencap -p > .tmp/screen.png- 使用
Read工具读取截图,了解当前屏幕状态
b) 分析屏幕:
- 确认当前显示的是哪个应用或屏幕
- 判断当前可见的 UI 元素(按钮、文本字段、开关、列表等)
- 评估任务目标的完成进度
- 如果屏幕内容不清晰,或需要进一步了解 UI 元素树,请运行 UI dump:
然后读取adb shell uiautomator dump /sdcard/ui.xml && adb pull /sdcard/ui.xml .tmp/ui.xml.tmp/ui.xml,获取元素边界、文本和资源 ID,以便精确确定点击坐标。
c) 决定并执行下一步操作:
使用以下一条或多条 ADB 命令:
操作 命令 点击指定坐标 adb shell input tap <x> <y>滑动 adb shell input swipe <x1> <y1> <x2> <y2> [duration_ms]输入文本 adb shell input text "<text>"按返回键 adb shell input keyevent 4按主屏幕键 adb shell input keyevent 3按回车键 adb shell input keyevent 66打开最近使用的应用 adb shell input keyevent 187启动应用 adb shell am start -n <package>/<activity>打开 URL adb shell am start -a android.intent.action.VIEW -d "<url>"长按 adb shell input swipe <x> <y> <x> <y> 1000坐标提示:
- 点击 UI 元素时,根据截图或 UI dump 中的
bounds属性瞄准元素中心(例如,边界[0,200][1080,350]→ 点击540,275) - 向下滚动时,从屏幕下方三分之一处滑动至上方三分之一处(例如,
adb shell input swipe 540 1500 540 500 300) - 输入文本时,先点击文本字段,稍等片刻,然后输入
d) 等待并验证:
- 每次操作后,稍等片刻,让 UI 稳定下来(
sleep 1) - 再截取一张屏幕截图,验证操作是否产生预期效果
- 如果操作未按预期生效(例如,点错元素、出现对话框、屏幕没有变化),请调整后重试
- 同一失败操作最多重试 2 次——如果仍然失败,请尝试其他方法(更换坐标、更换导航路径,或使用 UI dump 精确确定边界)
- 使用
-
处理常见情况:
- 键盘遮挡屏幕: 输入后,按返回键(
keyevent 4)关闭键盘,再截取验证截图 - 对话框/弹窗: 如果出现意外的对话框,请阅读内容并适当关闭(根据任务需要点击“OK”“Allow”“Deny”等)
- 加载屏幕: 如果屏幕显示正在加载,请等待 2-3 秒后再截取一张屏幕截图
- 应用未安装: 如果找不到目标应用,请告知用户并停止
- 权限提示: 授予任务所需的权限(点击“Allow”),拒绝无关权限
- 屏幕已锁定: 如果设备显示锁屏,请尝试向上滑动(
adb shell input swipe 540 1800 540 800)解锁。如果需要 PIN/密码,请询问用户
- 键盘遮挡屏幕: 输入后,按返回键(
-
出错时检查 logcat:
- 如果应用崩溃或行为异常,请检查最近的日志:
adb logcat -d -t 50 - 利用日志了解发生了什么;如果问题无法恢复,请告知用户
- 如果应用崩溃或行为异常,请检查最近的日志:
-
任务完成:
- 完成任务目标后,截取一张最终屏幕截图作为确认
- 向用户展示最终屏幕截图,并附上简短摘要:
## 任务完成 <已完成事项的说明> 最终状态:<屏幕上当前显示的内容> 已执行操作:<步骤数>
-
清理:
- 移除临时文件:
rm -f .tmp/screen.png .tmp/ui.xml
- 移除临时文件:
边缘情况
- 如果 PATH 中找不到
adb,请显示设置说明并停止 - 如果任务进行中设备断开连接,请尝试运行
adb devices检查;如果设备已断开连接,请告知用户并停止 - 如果任务需要安装应用,请先向用户询问 APK 路径或包名
- 如果陷入循环(连续 3 次显示同一屏幕),请获取 UI 转储,重新评估并尝试完全不同的方法。如果仍然无法解决,请告知用户并寻求指导
- 如果屏幕分辨率未知,请从第一张屏幕截图的尺寸中读取,或运行
adb shell wm size
评论
支持 Markdown