前言:ADB的痛点是什么?#
ADB(Android Debug Bridge)几乎是所有安卓玩机党、测试工程师的必备工具,我们可以用它执行截图、点击、安装应用、文件传输等几乎所有手机操作,但它有一个最大的短板:它只能执行命令,没法"看到"手机屏幕上的内容。
很多时候我们想做自动化操作,都会卡在"判断当前屏幕有什么"这一步:比如想跳过开屏广告,你得先知道"跳过"按钮在什么位置;想自动签到,得先识别到"签到"按钮有没有出现;想批量提取截图里的文字,得手动一张张复制。
今天我们就用OpenClaw的两个现成技能:ADB工具集 + 本地PaddleOCR,组合出一个完全本地化、零API费用、隐私安全的全自动安卓设备管理助手,实现"识别→决策→操作"的完整闭环。
一、整体方案设计#
整个架构非常简单,三层结构完全跑在本地,不需要任何云端服务:
1
2
3
4
| ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ ADB交互层 │ → │ PaddleOCR识别层 │ → │ OpenClaw逻辑层 │
│ (手机操作) │ │(文字+坐标识别) │ │(规则判断+调度)│
└─────────────────┘ └─────────────────┘ └─────────────────┘
|
各层职责:
- ADB层:负责和安卓设备交互,支持截图、点击、滑动、启动应用、拉取/推送文件、执行Shell命令等所有ADB原生能力
- OCR层:基于本地PaddleOCR实现,识别截图中的文字内容和对应坐标位置,全程本地运行,不会上传任何图片到第三方
- 逻辑层:OpenClaw作为调度中心,把两个能力串联起来,支持自定义规则,甚至可以用自然语言直接控制(比如"帮我把手机里的所有账单截图文字提取出来")
二、前置环境准备#
2.1 技能安装#
首先确保你已经在OpenClaw中安装了两个必备技能:
1
2
3
4
5
| # 安装ADB工具集技能
openclaw skills install adb
# 安装本地PaddleOCR技能
openclaw skills install paddle-ocrv5
|
安装完成后运行openclaw skills list确认两个技能状态都是✓ ready。
2.2 ADB设备连接#
- 安卓手机开启「开发者选项」→ 打开「USB调试」,用USB连接电脑,或者通过Wi-Fi无线连接
- 执行
adb devices确认设备已经连接成功,能看到设备ID输出 - (可选)配置ADB路径到系统环境变量,或者在
TOOLS.md中配置你的ADB实际路径
2.3 本地OCR服务启动#
PaddleOCR技能默认会启动本地MCP服务在端口18080,启动后可以通过lsof -i:18080确认服务正常运行。
三、核心功能实战(附完整代码)#
下面三个是我日常用得最多的场景,所有代码都可以直接复制运行。
3.1 实战1:自动跳过APP开屏广告#
这是最实用的功能,再也不用手动点"跳过",全程自动执行:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| #!/bin/bash
# auto_skip_ad.sh
# 1. 截图并拉取到本地
adb shell screencap /sdcard/screenshot.png
adb pull /sdcard/screenshot.png /tmp/
# 2. 调用本地OCR识别截图中的"跳过"文字
ocr_result=$(curl -s http://localhost:18080/ocr -F "image=@/tmp/screenshot.png")
# 3. 提取"跳过"按钮的坐标
skip_pos=$(echo $ocr_result | jq -r '.data[] | select(.text | contains("跳过")) | .bbox[0], .bbox[1]' | xargs echo)
# 4. 如果识别到跳过按钮,执行点击
if [ -n "$skip_pos" ]; then
x=$(echo $skip_pos | cut -d' ' -f1)
y=$(echo $skip_pos | cut -d' ' -f2)
adb shell input tap $x $y
echo "已自动跳过开屏广告"
else
echo "未识别到跳过按钮"
fi
|
你可以把这个脚本加到定时任务,每隔3秒运行一次,所有APP的开屏广告都会自动跳过。
3.2 实战2:批量提取手机截图中的文字#
经常在手机上截了很多笔记、账单、聊天记录,想把文字导出来?一行命令搞定:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| #!/bin/bash
# batch_extract_screenshot_text.sh
# 1. 拉取手机中所有截图到本地
mkdir -p /tmp/screenshots
adb pull /sdcard/Pictures/Screenshots/ /tmp/screenshots/
# 2. 循环识别所有截图的文字,保存到结果文件
result_file="./screenshot_texts.md"
echo "# 手机截图文字提取结果" > $result_file
echo "提取时间:$(date '+%Y-%m-%d %H:%M:%S')" >> $result_file
echo "" >> $result_file
for img in /tmp/screenshots/*.png; do
echo "## $(basename $img)" >> $result_file
ocr_text=$(curl -s http://localhost:18080/ocr -F "image=@$img" | jq -r '.data[].text' | tr '\n' ' ')
echo $ocr_text >> $result_file
echo "" >> $result_file
done
echo "所有截图文字已提取完成,结果保存到:$result_file"
|
3.3 实战3:APP自动签到#
再也不用每天手动打开APP签到,全自动完成:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| #!/bin/bash
# auto_checkin.sh
# 1. 启动目标APP(这里以某电商APP为例,替换成你自己的APP包名)
adb shell am start -n com.example.app/.MainActivity
# 2. 等待页面加载完成
sleep 5
# 3. 截图识别签到按钮
adb shell screencap /sdcard/checkin.png
adb pull /sdcard/checkin.png /tmp/
checkin_pos=$(curl -s http://localhost:18080/ocr -F "image=@/tmp/checkin.png" | jq -r '.data[] | select(.text | contains("签到")) | .bbox[0], .bbox[1]' | xargs echo)
if [ -n "$checkin_pos" ]; then
x=$(echo $checkin_pos | cut -d' ' -f1)
y=$(echo $checkin_pos | cut -d' ' -f2)
adb shell input tap $x $y
echo "签到成功"
# 签到完成后返回桌面
sleep 2
adb shell input keyevent 3
else
echo "未识别到签到按钮,可能已经签过到了"
fi
|
把这个脚本加到crontab每天早上9点执行,就能实现全自动签到。
四、更多扩展玩法#
这套方案的想象力非常大,我再分享几个高阶玩法:
- 移动端自动化测试:识别APP界面元素,自动执行用例,验证界面文案是否正确,不需要写复杂的UI自动化脚本
- 远程协助老人用手机:远程截图识别老人手机上的弹窗、错误提示,自动点击修复,不用远程控制一步步教
- 游戏自动化日常任务:识别游戏界面的"领取奖励"、“前往任务"按钮,自动完成日常任务,解放双手
- 批量设备管理:同时管理多台安卓设备,批量安装应用、检查设备状态、批量提取数据,适合测试团队使用
- 隐私内容批量处理:自动识别截图中的身份证、银行卡号等敏感信息,批量打码,不用担心上传到云端的隐私问题
五、踩坑优化指南#
5.1 ADB连接不稳定怎么办?#
- 优先用USB有线连接,Wi-Fi连接容易出现断连
- 可以加心跳检测,断连后自动重连:
adb connect <设备IP>:5555 - 多设备场景下,给每个设备设置别名,通过
-s <设备ID>指定操作目标
5.2 OCR识别准确率低怎么优化?#
- 截图前先把手机亮度调高,避免暗光下文字模糊
- 对截图做预处理:灰度化、二值化,提高对比度
- 如果是小字体识别不准,可以调整PaddleOCR的识别阈值,或者用超分辨率模型先放大图片
5.3 坐标偏移问题怎么解决?#
- 不同分辨率的手机坐标会有偏移,建议用相对坐标计算,不要写死固定坐标
- 识别到文字区域后,点击区域中心位置,不要点击左上角,容错率更高
六、总结与展望#
这套方案的最大优势就是完全本地化、零成本、隐私安全,所有操作都跑在你自己的机器上,不用担心图片、文字数据泄露到第三方服务商。
未来还可以继续扩展:
- 结合目标检测模型,不仅能识别文字,还能识别图标、按钮、头像等非文字元素
- 接入大语言模型,实现完全的自然语言控制,比如你说"帮我把手机里最近一周的账单都导出来整理成Excel”,自动完成所有操作
- 支持多设备并行管理,同时操作几十上百台安卓设备,适合企业级使用
如果你也有好玩的用法,欢迎在评论区分享~