☰
ADB自动化调度完全指南:6种定时执行与条件触发方法
2026/11/3 2:28:59 网站建设 项目流程

ADB自动化调度完全指南:6种定时执行与条件触发方法

【免费下载链接】awesome-adbADB Usage Complete / ADB 用法大全项目地址: https://gitcode.com/gh_mirrors/aw/awesome-adb

晚上十一点,你还要手动敲一遍adb命令去备份截图;第二天出门前,又得惦记着检查手机电量够不够撑到公司。这类重复、规律、规则明确的操作,恰恰是ADB自动化调度最擅长替你做掉的部分——把命令交给脚本,设备到点、到状态就会自己动。这篇文章不按命令分类,而是按"你想让手机帮你干什么"来讲:定时任务怎么配、设备状态触发怎么搭、多设备怎么协同,全部结合 awesome-adb(ADB用法大全)里的命令来说。

📅 先让ADB命令按时跑起来

最常见的场景是"每天固定时间干一件事":拉取备份、清理应用缓存、归档日志。这类需求在 Linux 和 macOS 上直接用系统自带的crontab就能解决,不需要额外装任何东西。

三步配置crontab定时任务

运行crontab -e打开编辑,按"分 时 日 月 星期"的格式写一行,末尾跟命令。比如这两行,意思是每天凌晨2点清空目标应用的数据,每周一早上8点把手机里的备份目录拉到电脑:

0 2 * * * adb shell pm clear com.example.app 0 8 * * 1 adb pull /sdcard/backup/ ~/backup/

写的时候有三个点容易翻车:

  • 给 adb 写绝对路径。crontab 环境的 PATH 很精简,直接写adb大概率找不到命令,要写全如/home/你的用户/platform-tools/adb
  • 命令末尾加上>> /var/log/adb-cron.log 2>&1,把执行日志落盘,排查问题时全靠它
  • 保存后跑一遍crontab -l确认配置真的写进去了

涉及到的具体命令语义,比如pm clear会清空应用全部数据、pm list packages -3只列出第三方应用,项目 README 里都有逐条说明,拿不准时查一下再写进计划任务。

让截图脚本自己归档

定时截图是使用频率最高的需求之一。思路很朴素:截图时带上时间戳命名,拉到电脑,再删掉手机上的临时文件。写成一个小脚本:

ts=$(date +%Y%m%d_%H%M%S) adb shell screencap -p /sdcard/s_$ts.png adb pull /sdcard/s_$ts.png ~/Pictures/ adb shell rm /sdcard/s_$ts.png

然后让 crontab 每隔半小时调用一次它,截图就会按时间自动归档,手机存储也不会越堆越多。

设备状态一变,自动做出响应

"定时"解决"什么时候做","条件触发"解决"什么时候该做"。套路都一样:周期性读取设备状态 → 判断是否越界 → 越界就执行预设动作。读状态这一步,dumpsys是主力,相关命令整理在项目的 related/dumpsys.md 里。

读电量,低于阈值就收手

电池信息藏在dumpsys battery输出的level字段里。用两行命令就能实现"电量低于15%时强制关闭耗电大户":

lvl=$(adb shell dumpsys battery | grep level | awk '{print $2}') [ "$lvl" -lt 15 ] && adb shell am force-stop com.example.heavyapp

把这段放进 crontab 每5分钟跑一次,效果就接近"电量一低立刻响应",而且完全不需要 root。

判断WiFi,匹配就启动同步

想"连上公司网络才开始同步数据",先查网络状态再发指令即可:

adb shell dumpsys wifi | grep -q "SSID: myoffice" \ && adb shell am start -a android.intent.action.SYNC

所有 ADB条件触发 都是这个骨架:dumpsys或getprop取状态,grep -q做判断,判断成立就接上执行命令。换个判断条件,就是另一套自动化。

处理多台设备和长时间任务

同时插着好几台手机时,必须用-s指定目标设备,否则命令不知道该发给谁:

adb -s emulator-5554 shell input keyevent KEYCODE_WAKEUP adb -s 192.168.1.20:5555 shell input keyevent KEYCODE_POWER

这个参数还能玩设备间的链式配合,比如让 A 设备先锁屏、B 设备再亮屏,一行命令串起来,多台测试机协同就不用手动挨个点了。

另一种情况是任务本身要跑很久,比如30分钟的 Monkey 压测。这种任务别绑在前台终端上,用nohup丢到后台,终端关掉也不影响:

nohup sh -c 'adb shell monkey -p com.example.app 100000' \ > /tmp/monkey.log 2>&1 &

⚠️ 避坑排错:定时任务最高频的3个问题

现象最可能的原因怎么解决
crontab 任务压根没执行adb 不在 crontab 的默认 PATH 里写 adb 绝对路径,并在命令末尾追加日志重定向
条件触发永远不命中不同 ROM 的dumpsys输出字段有差异先手动执行adb shell dumpsys battery看真实输出,再调整 grep 和 awk
多台设备时命令跑错了手机没指定-s参数先adb devices确认序列号,每条命令都带上-s <序列号>

还有一个经典坑:命令在终端里手动跑得好好的,放进脚本就失灵。九成是 PATH 或工作目录问题,脚本开头加一句echo $PATH基本就能定位。

把上面这些拼起来,开头那两件事就都交出去了:备份到点自己跑,电量低了自己处理。你的时间,可以留给更值得花时间的事。

【免费下载链接】awesome-adbADB Usage Complete / ADB 用法大全项目地址: https://gitcode.com/gh_mirrors/aw/awesome-adb

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询