Auto.js/AutoX.js 入门指南:从零构建你的第一个自动化脚本
1. 为什么选择Auto.js/AutoX.js作为自动化工具如果你每天都要在手机上重复点击几十次相同的按钮或者需要定时收集某些APP里的数据一定会觉得这种工作既枯燥又浪费时间。我最早接触手机自动化就是因为每天要手动处理上百张图片的保存和分类直到发现了Auto.js这个神器——它让我用20行代码就解决了这个痛点。Auto.js/AutoX.js最大的优势在于零门槛。不同于其他需要Root权限的自动化工具它基于Android系统的无障碍服务Accessibility Service实现自动化操作。这意味着不需要破解手机系统使用JavaScript这种对新手友好的语言能实现90%的常见自动化需求举个真实案例我帮朋友写了个自动打卡脚本。他公司用的钉钉考勤需要每天手动点击5次屏幕完成打卡而我的脚本只需要他上班时带着手机到点自动完成所有操作。从编写到调试只用了1小时这就是Auto.js的魅力。2. 环境搭建与基础配置2.1 安装AutoX.js最新版由于原版Auto.js已停止维护推荐使用社区维护的AutoX.js。安装步骤很简单在GitHub搜索AutoX.js找到官方仓库下载最新APK文件当前稳定版是6.3.6安装前需开启允许安装未知来源应用权限注意首次启动时会要求开启无障碍服务权限。在系统设置中找到AutoX.js并开启这是所有自动化功能的基础。2.2 开发环境准备虽然可以在手机上直接编写代码但我强烈建议使用VS Code插件方案电脑安装VS Code搜索安装Auto.js-VSCodeExt插件通过WiFi或USB连接手机与电脑这样可以在电脑上编写代码实时同步到手机执行。调试时还能看到控制台输出效率提升十倍不止。3. 第一个自动化脚本钉钉自动打卡让我们用一个实际案例学习基础API的使用。这个脚本会实现定时启动钉钉APP自动点击工作台和考勤打卡按钮识别打卡成功提示后退出3.1 基础代码结构// 钉钉包名 const DINGTALK_PKG com.alibaba.android.rimet; // 主函数 function main() { // 解锁屏幕需设备允许 device.wakeUp(); // 启动钉钉 launchApp(DINGTALK_PKG); waitForApp(5000); // 执行打卡流程 doPunchCard(); } // 等待APP启动 function waitForApp(timeout) { let start Date.now(); while (!currentActivity().includes(dingtalk)) { if (Date.now() - start timeout) { throw new Error(启动钉钉超时); } sleep(500); } }3.2 控件操作核心APIAuto.js的核心是通过控件识别来操作界面元素function doPunchCard() { // 点击工作台 let workbench text(工作台).findOne(3000); if (workbench) { workbench.click(); } else { // 备用方案通过坐标点击 click(device.width / 2, device.height - 100); } // 滑动查找考勤打卡按钮 scrollDownUntilFind(考勤打卡); // 点击打卡 let punchBtn textContains(打卡).findOne(2000); if (punchBtn) { punchBtn.click(); toast(打卡成功); } } // 滚动查找元素 function scrollDownUntilFind(text) { for (let i 0; i 5; i) { if (textContains(text).exists()) return; swipe(device.width / 2, device.height * 0.8, device.width / 2, device.height * 0.3, 500); sleep(1000); } }4. 调试技巧与常见问题4.1 控件识别神器遇到无法通过text定位的元素时使用auto.waitFor()确保界面稳定打开开发者选项中的指针位置显示坐标用bounds()获取元素位置范围let el id(btn_confirm).findOne(); console.log(元素位置:, el.bounds());4.2 定时任务设置想让脚本定时运行有两种方案使用AutoX.js内置的定时任务功能通过系统级工具如Tasker触发推荐第一种方式在脚本开头添加// 每天8:30执行 tasks.timeTask( 30 8 * * *, punchCard.js );4.3 常见报错处理无障碍服务未开启检查设置并重新授权找不到控件增加等待时间或改用图像识别权限不足在设置中开启显示悬浮窗权限我遇到最头疼的问题是不同机型适配。比如华为EMUI会限制后台进程解决方案是在电池优化设置中将AutoX.js设为不允许优化。5. 进阶技巧图像识别与多设备控制当标准控件操作无法满足需求时可以结合OpenCV实现更强大的自动化// 引入OpenCV库 importClass(org.opencv.imgproc.Imgproc); function findAndClick(template) { let screen captureScreen(); let result matchTemplate(screen, template); if (result.maxVal 0.9) { click(result.maxLoc.x template.width/2, result.maxLoc.y template.height/2); return true; } return false; }对于需要控制多台设备的情况可以使用adb命令通过电脑统一控制function adbTap(x, y, serial) { let cmd adb -s ${serial} shell input tap ${x} ${y}; shell(cmd, true); }这些技巧在我做电商自动化运营时特别有用可以同时管理十几台手机自动执行任务。不过要注意遵守平台规则避免操作频率过高被封号。写自动化脚本最爽的时刻就是看着手机自动完成那些曾经让你抓狂的重复操作。从简单的定时打卡到复杂的多APP联动AutoX.js能实现的远比你想象的更多。建议从小项目开始逐步积累自己的代码库你会发现很多脚本只需要稍作修改就能复用到新场景。