执行 Android ADB(Android 调试桥)命令,用于设备管理、应用管理、调试和自动化。当用户请求任何与 ADB 相关的操作时使用。
Android ADB.是一项面向实际任务的技能,主要用于Execut ADB通过自然语言或直接命令输入来指挥,并有多设备支持,安全护栏,以及沙箱式的ADB安装.;Workflow.;
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
支持通过自然语言或直接输入命令执行 ADB 操作,具备多设备支持、安全防护机制及沙箱化 ADB 安装能力。
adb devices -l。若命令失败(提示 command not found),进入 ADB 解析流程查找或安装 adb,然后重试。-s 参数。当系统中未找到 adb 时,通过 scripts/adb_env.sh 进行解析,查找顺序为:系统 PATH → 常见 SDK 路径(~/Library/Android/sdk/、~/Android/Sdk/)→ sandbox 本地路径()。
若上述路径均未找到,向用户询问:“ADB 未安装,是否需要我帮你安装到 skill 本地目录?(不影响系统配置)”
若用户同意,则执行 bash (无需 sudo 权限,不修改 PATH;卸载方式为 rm -rf )。
当 adb devices -l 返回多个设备时:
-s bash scripts/device_check.sh 获取设备快速概览| 等级 | 行为 | 示例 |
|---|---|---|
| 安全 | 直接执行 | adb devices、logcat、screencap、getprop、pull、文件列表类命令 |
| 中等风险 | 先展示命令,再执行 | install、push、am start、input tap、pm grant |
| 危险 | 展示命令、说明风险,并要求用户明确输入 “yes” 才可执行 | pm clear、uninstall、factory reset、flash、wipe、reboot |
bash/scripts/device_check.sh
bash/scripts/screenshot.sh [output_dir] [serial]
bash/scripts/logcat_capture.sh all [output_file] [serial] bash /scripts/logcat_capture.sh crash [output_file] [serial] bash /scripts/logcat_capture.sh app [output_file] [serial] bash /scripts/logcat_capture.sh tag [output_file] [serial]
当用户请求任何长时间运行或高冗余度的日志输出(如 logcat 流式输出、dropbox dump、dumpsys、大型 trace 输出等)时,除非用户明确指定了输出文件路径,否则一律新开一个系统终端窗口来显示输出。此举可为用户提供可滚动、可中断、专属的查看界面,且不会阻塞当前对话流。
仅当用户明确说出“保存到文件” / “输出到 xxx.txt” 或提供了具体文件路径时,才将内容写入文件。
osascript -e 'tell app "Terminal" to do script ""'
# GNOME gnome-terminal -- bash -c '; exec bash' # KDE konsole -e bash -c ' ; exec bash' # 回退方案 x-terminal-emulator -e bash -c ' ; exec bash'
将 替换为实际命令,例如:
adb logcat —— 全量日志adb logcat | grep -i "redirect" --line-buffered —— 按关键词过滤adb logcat -s MyTag:D —— 按 Tag 过滤adb logcat --pid=$(adb shell pidof com.example.app) —— 按应用进程过滤zsh 将 * 视为通配符。当命令中含 *(例如 Tag:*)时,必须在 osascript 字符串中对其转义:
# 错误 —— zsh 会提前展开 * osascript -e 'tell app "Terminal" to do script "adb logcat -s MyTag:*"' # 正确 —— 对 * 进行转义 osascript -e 'tell app "Terminal" to do script "adb logcat -s MyTag:\*"'
终端窗口启动后,需向用户明确报告:“已打开新终端窗口,正在运行以下命令:[命令]”。
adb install -r
若安装失败,请检查:设备存储空间(adb shell df -h)、已有应用版本、是否启用测试包标志(-t)。
采用两级回退策略:
adb logcat -b crash -d | grep
⚠️ 强制规则:严禁主动挑选 dropbox 条目。必须先列出所有条目,等待用户选择后再输出内容。绝不允许跳过用户选择步骤。
步骤 1 —— 列出 dropbox 中所有 crash/anr 条目及其时间戳,供用户选择:
adb shell dumpsys dropbox | grep -E "^[0-9].*(_crash|_anr)"
输出示例:
2026-04-09 11:04:34 data_app_anr (compressed text, 23807 bytes)
Process: com.netease.cloudmusic:play/PID: 2553 ...
2026-04-09 10:23:45 data_app_crash (text, 1234 bytes)
Process: com.example.app/PID: 1234 ...
步骤 2 —— 将列表完整呈现给用户(含完整日期时间、类型、进程信息),然后必须等待用户明确选择要查看哪一条。严禁自行判断、自动选择最近一条或任意一条。
步骤 3 —— 用户选择后,在新终端窗口中展示对应条目:
# 使用用户选择的条目的时间戳 adb shell dumpsys dropbox --print '' --since
采用两级回退策略:
adb shell uiautomator dump /sdcard/ui_dump.xml adb pull /sdcard/ui_dump.xmladb shell rm /sdcard/ui_dump.xml
could not get idle state):adb shell dumpsys activity top -a >
该方式输出基于文本的 View Hierarchy(非 XML 格式),但包含等效的结构化信息。
adb shell screenrecord /sdcard/recording.mp4 # 默认最长 180 秒 adb shell screenrecord --time-limit 30 /sdcard/recording.mp4 # 限制为 30 秒 # 按 Ctrl+C 停止录制,然后拉取: adb pull /sdcard/recording.mp4adb shell rm /sdcard/recording.mp4
adb shell dumpsys activity activities | grep mResumedActivity
adb shell dumpsys meminfoadb shell dumpsys gfxinfo adb shell dumpsys cpuinfo | grep
adb tcpip 5555 # 查看设备 IP(通常来自 wlan 接口): adb shell ip route | grep wlan adb connect:5555
执行以下任一操作前,均须强制确认:
pm clear —— 永久清除应用数据uninstall —— 卸载应用rm -rf —— 删除文件或目录reboot / reboot recovery / reboot bootloaderfactory reset / wipe_datafastboot flash —— 覆盖写入分区pm disable-user —— 禁用系统应用settings put —— 修改 system/secure/global 设置项setprop —— 修改系统属性su / adb root —— 提权至 root 权限sideload —— 刷入 OTA 包--user 0 的命令需向用户准确展示待执行命令及一行风险说明,并等待其明确确认。
| 问题 | 解决方法 |
|---|---|
device not found |
检查 USB 数据线、确认开发者选项中已启用 USB 调试 |
device unauthorized |
在设备上接受 RSA 密钥提示,或执行 adb kill-server && adb start-server |
multiple devices |
使用 -s 显式指定设备 |
INSTALL_FAILED_* |
检查错误后缀 —— 常见情况:ALREADY_EXISTS(加 -r 参数重装)、INSUFFICIENT_STORAGE、OLDER_SDK |
Permission denied |
尝试 adb root 或 run-as |
| 命令卡住(hang) | 按 Ctrl+C 中断,再执行 adb kill-server && adb start-server |
完整的 ADB 命令速查表(按功能分类整理),详见 references/adb-commands.md。