在安卓上做自动化,现在已经不用 root 了。两条成熟通道:无障碍服务读界面,ADB 下指令。这就是安卓自动化的日常形态。
它和写 App 不是一回事,准备什么
很多人听到“写脚本”就心里发憷,觉得又要配置 JDK、调 Gradle、装 SDK……停。安卓自动化脚本开发不需要这些。你写的是一个 js 文件,通过 ADB 传到手机上跑,或者利用无障碍服务直接操控屏幕。没有 APK 要打包,没有商店要上架,也没有用户要对接。 就是你自己给自己写的干活工具。要打包装箱吗?不用。
优势很直白:改一行代码就能看效果,同一份脚本可以扔给任意一台安卓手机去执行。只要会基础的变量、循环、if else,就能开始写。
硬件方面很简单:一台安卓手机(调试的时候至少得有一台真机)、一根 USB 线、你的电脑。如果你只管一台手机,一套就够了;打算批量管控的话建议同型号统一,兼容性省事很多。
软件我推荐直接用 EasyClick 全家桶,省去了各种环境配置的功夫:IDE 基于 IntelliJ IDEA 做的,装了就能用,Windows、Mac、Linux 都有;内置了大量现成的示例工程,拿来改改参数就跑;手机端装一个轻量 APK 就行,不用 ROOT。备选方案也有一些:按键精灵门槛更低但功能有限,Auto.js 适合技术折腾党,UiAutomator2 更偏专业测试方向但配置麻烦不少。对于大多数人来说,EasyClick 是省心路线。
十分钟跑通第一个脚本,和几个别踩的坑
先跑通再谈技巧。下载安装 EasyClick IDE,打开后创建一个新项目,平台选安卓。打开手机设置 → 关于手机 → 版本号那里连点七次 → 返回上级进入开发者选项 → 打开 USB 调试。然后插入数据线,IDE 里点连接,手机上弹出的授权提示确认一下就好。IDE 自带了一个「自动点击签到」的示例,通常在「示例工程 → 安卓」目录下,打开之后你会看到 main.js,这就是你的第一个脚本。长这样:
var appPackageName = "com.example.app"; // 改成你要操作的 App 包名
app.launch(appPackageName);
sleep(3000);
if (clickByText("签到")) {
toast("签到成功!");
} else {
toast("没找到签到按钮");
}
sleep(2000);
if (clickByText("确定") || clickByText("关闭")) {
// 关掉弹窗
}
toast("搞定");
没什么花哨的东西。三步:打开 App → 找“签到”两个字 → 点它。IDE 里的运行按钮一点,脚本就会跑到手机上执行,这时候看着手机自己打开 App、跳转到签到页面、点完按钮回来——成就感来得很快。
技巧有四条。别用固定坐标,这是新手最容易犯的错:你以为按钮永远在 (500, 800) 那个位置?App 随便更新一版就全乱了,改成按文字或图片来找目标:
// 推荐写法
clickByText("继续"); // 找"继续"这俩字在哪然后点
clickByDesc("下一步按钮"); // 按 accessibility description 找
// 不推荐写法
click(500, 800); // App 一改布局就瞎了
别死等固定时间,傻等五秒,快的时候浪费、慢的时候不够:
// 反例:傻等五秒,快的时候浪费慢的时候不够
sleep(5000);
// 最多等十秒,找到了就不等了
waitForElementByText("确认", 10000);
学会截图识图,界面上有些东西读不到控件文本,就截张图让 OCR 认:
var pos = findImage("confirm-button.png");
if (pos) {
click(pos.x, pos.y);
}
加上异常处理,脚本中间断了没人知道为什么是最烦的事,套一层基本的 try-catch:
try {
launchApp("com.example.app");
sleep(3000);
tapTarget();
} catch(e) {
print("出错了: " + e.message);
showToast("任务失败,请检查网络");
}
出问题怎么排查,跑通后怎么长期用
常见故障就那么几类。连不上手机,先看 adb devices 有没有识别到你的设备、驱动装了吗、USB 调试开了吗;找不到元素,一般是 App 改版了,换个策略比如图片匹配或者 OCR;脚本中途停了,大概率被省电策略杀了后台,去电池设置里把你的 App 设为无限制;点击没反应,多半是前面有弹窗挡住了,加一段弹窗处理的逻辑;卡顿明显,把 sleep 的时间缩短一点,或者用异步非阻塞的方式。
刚开始手动点运行没问题,后面可以按场景升级。定时任务用系统 cron 或者 Windows 计划任务,每天早上八点自动触发脚本;云控调度适合十几台以上,需要一个云端面板统一管理、一键下发、实时看每台手机的状态;事件触发结合 webhook,收到通知再跑,比如发货前自动巡检库存。企业级百台以上规模的话,用 iEasyClick 的云控系统配合可视化运维面板最合适——上百台还一台台管?那得上云控了。
延伸阅读
EasyClick 官方文档,API 参考手册 第一个工程入门教程,从零创建项目 无障碍服务原理详解,了解一下底层是怎么工作的
============================
iEasyClick 官网 ieasyclick.net · 专注于安卓/苹果/鸿蒙全平台手机自动化
============================
想要真实跑起来?
本文介绍的方案均可基于 EasyClick 能力在 iEasyClick 落地。官网提供完整文档、开发工具与自动化产品,免费体验。