安卓自动化助手
基于 Rust + ADB + OpenCV 的安卓设备自动化学习框架。通过视觉模板匹配与流程编排,理解移动端自动化测试核心原理——仅限合法教育场景。
用途
面向学生、测试工程师与自动化爱好者的开源教育项目:在不改 APK 的前提下,用 ADB + 计算机视觉演示安卓设备的程序化操控。
学习目标
理解 ADB 指令、截图流水线、模板匹配置信度,以及多步骤流程的状态机设计。
适用场景
UI 自动化测试教学、毕业设计演示、自有设备效率脚本、OpenCV 图像识别实验。
不适用
商业外挂、灰产刷单、批量养号、破解应用、窃取数据——本项目明确拒绝支持。
使用边界
技术中立,用途决定合法性。仅在自有或书面授权的测试设备上运行;不收集隐私、不改第三方 APK、不为违法需求提供技术支持。
⚠️ 合规与禁止用途(合并摘要)
- 严禁游戏外挂、刷单炒信、批量私信、抢票黄牛、监控他人手机等违法违规用途。
- 违反《网络安全法》《反不正当竞争法》等法规的行为,由使用者自行承担全部法律责任。
- 作者仅提供教育材料,不对任何滥用行为负责;不确定是否合法时请咨询专业法律人士。
核心能力
分层架构:流程引擎调度「截图 → 匹配 → 点击 → 等待」,与设备层 / 视觉层解耦。
- ADB 通信 — tap / swipe / screencap,标准 USB 调试即可,无需 root
- OpenCV 模板匹配 — TM_CCOEFF_NORMED、置信度阈值、ROI 裁剪加速
- 流程编排 DSL — 声明式步骤、条件分支、重试与超时策略
- Rust 运行时 — 内存安全、异步多设备、结构化日志便于教学复盘
交互演示实验室
以下演示均为浏览器内纯前端模拟,帮助理解自动化流程逻辑。不会连接真实设备,不会执行任何 ADB 命令。
模拟按预设顺序自动点击应用图标,展示 tap 动画与步骤高亮。
点击「扫描屏幕」模拟 OpenCV matchTemplate 过程,观察置信度变化。
模板: btn_confirm.png · 方法: TM_CCOEFF_NORMED · 阈值: 0.85
编辑自动化步骤列表,点击执行观察状态机逐步推进。
ADB 命令日志模拟
ROI 区域选择器
拖拽绘制 ROI 矩形 · 当前: 未选择
重试与超时配置
技术栈
三大支柱协同,构成完整的安卓自动化流水线。
// 简化流水线
loop {
let frame = adb.screencap()?;
let (x, y, conf) = opencv.match_template(&frame, &template)?;
if conf >= threshold { adb.tap(x, y)?; flow.advance()?; }
}
快速上手
前置:Rust toolchain、Android SDK Platform Tools(adb)、OpenCV 4.x;设备开启 USB 调试。
git clone https://github.com/Cuishaoyang99/Android-auto.git
cd Android-auto
cargo build --release
./target/release/android-auto --config flows/demo.toml
- USB 连接手机,执行
adb devices确认在线 - 截取目标按钮小图,保存为模板(如
templates/btn_ok.png) - 编写流程配置,设置匹配阈值(建议 0.85+)后运行并查看日志
常见问题
Q: 可以用于游戏自动化吗?
不可以。游戏自动化属于外挂范畴,违反服务协议且可能违法。本项目仅面向合法测试与教育场景。
Q: 需要 root 权限吗?
不需要。标准 USB 调试权限即可。本项目不依赖也不鼓励 root。
Q: 为什么选 Rust 而不是 Python?
Python 生态更易上手,但 Rust 在性能、部署体积与类型安全方面更适合作为系统编程教学案例。两者原理相通。
Q: 模板匹配和 OCR 哪个更好?
模板匹配对固定图标高效;OCR 适合文字按钮但更慢。本项目聚焦模板匹配以控制教学复杂度。
Q: 如何报告安全问题?
请通过 GitHub Security Advisory 私下联系维护者,勿公开披露可被滥用的细节。
开始探索
源码与文档开源,欢迎用于合法教育与测试实践。