AutoJSX自动化开发入门指南(2025最新版)
AutoJSX自动化开发入门指南(2025最新版)
一、AutoJSX概述与优势
1.1 技术背景
AutoJSX是基于Auto.js二次开发的开源JavaScript自动化工具,支持在Android设备上实现免Root的自动化操作。相比原版Auto.js,其特性包括:
- 持续更新维护(原版已于2020年停止更新)
- 兼容主流应用的无障碍操作(如微信、抖音等)
- 支持WebSocket通信和工程化开发
- 内置Node.js引擎(性能是Rhino引擎的100倍以上)
1.2 典型应用场景
- 自动化测试:APP功能验证、压力测试
- 办公辅助:自动填表、消息批量处理
- 游戏脚本:重复任务自动化
- 数据采集:商品信息抓取、动态监控
二、开发环境搭建
2.1 基础工具安装
-
PC端工具:
- VSCode(安装
Auto.js-VSCodeExt-Fixed
插件) - 夜神模拟器(Android 7.1+)或真机调试
- VSCode(安装
-
移动端配置:
# 安装AutoX.js APK(推荐6.4.3+版本) # 开启权限: - 无障碍服务 - 悬浮窗权限 - 后台弹出界面权限
2.2 环境联动配置
通过VSCode实现PC与设备通信:
- 启动VSCode服务:
Ctrl+Shift+P
→ 输入AutoX.js: Start Server
- 设备端连接:
// 手机端输入PC的IP地址(需同一网络) // 成功连接后VSCode右下角显示设备信息
三、基础语法与核心功能
3.1 控件操作
定位元素方法
// 通过文本定位
text("登录").findOne().click();
// 组合条件定位
className("android.widget.Button")
.depth(5)
.descContains("确认")
.findOne()
.longClick();
父子层级关系
// 通过父控件定位子元素
var parent = id("container").findOne();
parent.child(0).child(2).click();
3.2 事件监听
// 按键监听
events.observeKey();
events.onKeyDown("volume_up", () => {
toast("音量+被按下");
});
// 触摸监听
events.observeTouch();
events.on("touch", (point) => {
console.log(`触摸坐标:${point.x},${point.y}`);
});
3.3 图像处理
// 截图与找图
if(!requestScreenCapture()){
exit();
}
let screen = images.captureScreen();
let target = images.read("/sdcard/button.png");
let pos = findImage(screen, target);
click(pos.x, pos.y);
四、工程化开发实践
4.1 项目结构规范
推荐目录结构:
/project
├── src
│ ├── modules # 功能模块
│ └── main.js # 入口文件
├── resources # 图片资源
└── package.json # 配置信息
4.2 模块化开发示例
// utils.js
module.exports = {
safeClick: function(selector) {
while(!selector.exists()) sleep(500);
selector.findOne().click();
}
};
// main.js
const { safeClick } = require('./utils');
safeClick(text("确认"));
4.3 调试技巧
- 控制台日志分级:
console.verbose("调试信息"); console.error("错误记录");
- 异常捕获:
try { riskyOperation(); } catch(e) { toast(e.stack); }
五、实战案例:微信自动化
5.1 消息自动回复
auto.waitFor();
events.observeNotification();
events.onNotification(function(notification) {
if(notification.getPackageName() === "com.tencent.mm") {
let text = notification.getText();
if(text.includes("@我")) {
click(desc("输入框"));
setText("已收到,稍后回复");
click(text("发送"));
}
}
});
5.2 朋友圈自动点赞
while(true) {
let likeBtn = descMatches(/赞|Like/).findOne();
if(likeBtn && !likeBtn.selected()) {
likeBtn.click();
sleep(3000);
}
scrollDown();
}
六、高级功能进阶
6.1 多线程管理
// 启动子线程
threads.start(function() {
while(true) {
monitorBattery();
sleep(60000);
}
});
function monitorBattery() {
let level = device.getBattery();
if(level < 20) toast("电量不足!");
}
6.2 WebSocket通信
// 连接远程服务器
var ws = new WebSocket("ws://192.168.1.100:8080");
ws.onmessage = function(event) {
let cmd = JSON.parse(event.data);
executeCommand(cmd);
};
6.3 APK打包与发布
打包流程:
- VSCode右键项目 →
AutoX.js: 打包应用
- 修改APK属性避免报毒:
<!-- 修改AndroidManifest.xml --> <manifest package="com.custom.app">
- 签名后发布
七、常见问题与优化
7.1 性能优化建议
- 启用快速模式:
auto.setMode('fast')
- 合理使用缓存:
selector.findOnce()
代替find()
- 避免内存泄漏:及时回收Image对象
let img = images.read("1.png"); // ...操作... img.recycle();
7.2 兼容性处理
- 多分辨率适配:
let screenWidth = device.width; let clickX = screenWidth * 0.8;
- 系统版本判断:
if(device.sdkInt >= 29) { // Android 10+特殊处理 }
八、学习资源推荐
- 官方文档:AutoX GitHub Wiki
- 社区论坛:AutoJSX中文社区(活跃开发者交流)
- 实战项目:
- 电商抢购脚本
- 短视频自动浏览
- 健康打卡自动化
通过本指南,您已掌握AutoJSX的核心开发技能。建议结合官方文档和社区案例持续实践,后续可深入学习图像识别算法、反检测机制等高级主题。遇到具体问题时可参考控件探测技巧和线程优化方案,祝您在自动化开发领域取得突破!