资讯详情

ADB 定时任务实战:3 种触发方式让设备自动干活

📅 2026/11/3 2:33:14 | 华诺云谱 👁 阅读
ADB 定时任务实战:3 种触发方式让设备自动干活
ADB 定时任务实战3 种触发方式让设备自动干活【免费下载链接】awesome-adbADB Usage Complete / ADB 用法大全项目地址: https://gitcode.com/gh_mirrors/aw/awesome-adb你不必每次都亲手敲 adb 命令。把 ADB 命令交给宿主机定时器和设备状态轮询备份、截图、清缓存都能在指定时间或满足条件时自动完成。下面用 awesome-adbADB 用法大全仓库里的命令把整条链路搭起来。⏱ 前置准备与环境确认宿主机已安装 adb能正常执行adb version。设备已开启 USB 调试并完成授权adb devices中显示为device状态而非unauthorized。使用 crontab 的宿主机需为 Linux/macOS且 cron 服务在运行systemctl status cron确认。脚本以当前用户权限执行涉及 system 分区操作时设备需要 root。同时连接多台设备时所有命令必须带-s serial参数锁定目标。⚙️ 核心操作路径触发方式分两类到点执行、条件满足执行。先看最稳的一种——把时间交给系统调度器。crontab 配置 ADB 定时任务的正确姿势先拿到 adb 的绝对路径因为 cron 的 PATH 很精简裸写adb大概率找不到命令# 查看 adb 绝对路径后续 cron 行要用到它 which adb # 编辑当前用户的定时任务 crontab -e确认路径后在 crontab 里添加两行# 每天 02:00 清空指定应用的数据缓存 0 2 * * * /usr/local/bin/adb shell pm clear ${your-package} # 每周一 08:30 把设备截图目录拉到本机备份 30 8 * * 1 /usr/local/bin/adb pull /sdcard/screenshots/ ~/backup/screenshots/此处替换${your-package}为你的实际包名并把/usr/local/bin/adb换成本机真实路径。电量阈值触发命令怎么写条件来自设备状态电量、焦点窗口等时用 shell 循环轮询满足条件就执行动作#!/bin/bash ADB/usr/local/bin/adb PKG${your-package} while true; do # 读取当前电量设备离线时 level 为空跳过本轮 level$($ADB shell dumpsys battery 2/dev/null | grep level | awk {print $2}) [ -z $level ] { sleep 60; continue; } # 电量低于 20% 时强制停止高负载应用省电 [ $level -lt 20 ] $ADB shell am force-stop $PKG sleep 60 done此处替换${your-package}为你的实际包名。轮询间隔由sleep控制60 秒是耗电和响应速度的合理折中只想跑一段时间可以外层再包一个总循环次数。用 am broadcast 让应用自己接招如果目标应用自己注册了 BroadcastReceiver宿主机随时可以用am broadcast推一条广播过去由应用端决定做什么。这是不需要 root 时最接近设备内调度的形态# 向目标应用的接收器发送自定义广播 adb shell am broadcast -a ${your-action} -n ${your-package}/.YourReceiver此处替换${your-package}为应用包名、${your-action}为你自定义的广播 action接收器必须在应用里注册否则广播发了也没有人接。 实战场景组合夜间归档截图 → 拉取 → 清缓存这个组合一次跑完直接挂 crontab 就是无人值守#!/bin/bash ts$(date %Y%m%d_%H%M%S) # 生成时间戳文件名 adb shell screencap -p /sdcard/shot_$ts.png # 设备端截图 adb pull /sdcard/shot_$ts.png ~/Pictures/ # 拉取到本机 adb shell rm /sdcard/shot_$ts.png # 清理设备端临时文件 adb shell pm clear ${your-package} # 清空目标应用数据此处替换${your-package}为你的实际包名。crontab 里加一行15 2 * * * /path/to/this/script.sh每天凌晨 2:15 自动完成归档加清缓存设备存储空间不再靠手动腾。跨设备协同一台的状态触发另一台自动化测试多台设备时-s参数让一条脚本驱动多机联动# 设备 A 先锁屏电源键设备 B 随即唤醒 adb -s ${serial-A} shell input keyevent KEYCODE_POWER adb -s ${serial-B} shell input keyevent KEYCODE_WAKEUP # 设备 B 截图直接写入本机磁盘 adb -s ${serial-B} exec-out screencap -p shot_B.png此处替换${serial-A}、${serial-B}为adb devices输出的序列号。exec-out让截图不落设备盘省掉 pull 一步也避免文件残留。️ 性能边界与避坑清单crontab 任务静默不执行→ cron 环境 PATH 极简找不到 adb → 一律写which adb得到的绝对路径。Windows 下拉取的截图打不开→adb shell输出带 CRLF 行尾污染 png 数据 → 改用adb exec-out screencap -p x.png。电量触发误报或报错→ 设备离线时 level 为空数字比较直接失败 → 循环里先做[ -z $level ]判空再继续。pm clear 把用户数据一并清掉→ 该命令清的是全部应用数据而非仅缓存 → 对正式包执行前先截图或 pull 备份。多设备时命令打到错误设备→ 不带-s时 adb 行为不确定 → 脚本中所有命令固定-s serial锁定目标。 延伸阅读与相关模块本文用到的动作与状态查询命令仓库的 related/ 目录都有完整清单related/am.md — am 子命令全集覆盖 start、force-stop、broadcast是让应用做某事的入口。related/pm.md — pm 包管理命令覆盖查包、安装卸载、清数据定时清理场景的主要工具。related/dumpsys.md — dumpsys 状态查询如何拿到当前焦点 Activity 等适合做轮询脚本的条件判断。【免费下载链接】awesome-adbADB Usage Complete / ADB 用法大全项目地址: https://gitcode.com/gh_mirrors/aw/awesome-adb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑