Auto.js 入门指南(一)什么是 Auto.js

前言

大家好,我是鲫小鱼。是一名不写前端代码的前端工程师,热衷于分享非前端的知识,带领切图仔逃离切图圈子,欢迎关注我,微信公众号:《鲫小鱼不正经》。欢迎点赞、收藏、关注,一键三连!!

什么是 Auto.js

理论讲解

Auto.js 是一款基于 JavaScript 语法的 Android 自动化开发工具。它允许开发者通过编写脚本,实现对手机界面、应用、控件的自动化操作。Auto.js 结合了无障碍服务(Accessibility Service)和强大的 UI 控件识别能力,可以模拟点击、滑动、输入等操作,极大地提升了移动端自动化的效率。

主要特点

  • 基于 JavaScript:上手门槛低,适合有 JS/TS 基础的开发者。
  • 强大的 UI 控件识别:支持多种控件查找方式,适配不同应用界面。
  • 丰富的 API:涵盖界面操作、文件读写、网络请求、定时任务等。
  • 支持多线程与异步操作:可实现复杂的自动化流程。
  • 可视化 UI 开发:支持自定义界面,便于交互和调试。

适用场景

  • 自动化测试
  • 自动签到、自动抢红包
  • 自动化数据采集
  • 辅助工具开发
  • 日常重复性操作自动化

调试与辅助工具

在 Auto.js 脚本开发过程中,合理利用调试和辅助工具可以大大提升开发效率和排查问题的能力。

常用调试工具

  • scrcpy 投屏工具
    • 通过 USB 或 WiFi 将手机屏幕实时投射到电脑,支持鼠标操作和录屏,极大方便了脚本调试和演示。
    • scrcpy 官方地址
  • 日志查看
    • 使用 log()console.log() 或 Auto.js 内置日志面板,实时输出调试信息。
    • 结合 Android 的 adb logcat 命令,可以查看系统级日志,辅助排查崩溃和权限问题。
  • 模拟器
    • 推荐使用夜神、雷电等安卓模拟器进行脚本开发和批量测试,便于多环境适配。
  • 开发者选项
    • 启用 Android 手机的开发者选项和 USB 调试,便于脚本部署和调试。
  • 辅助工具箱
    • 如 Auto.js 社区常用的"控件助手"、"布局分析器"等,可以辅助查找控件属性和界面结构。

调试建议

  • 多用日志输出,定位问题。
  • 投屏+鼠标操作,实时观察脚本执行效果。
  • 结合模拟器和真机,提升兼容性。
  • 遇到复杂界面,优先用控件助手分析结构。

代码示例

下面是一个简单的 Auto.js 脚本,自动打开微信并点击"发现"按钮:

javascript 复制代码
// 请求无障碍权限
auto.waitFor();
// 启动微信
app.launchApp("微信");
// 等待主界面加载
waitForActivity(".ui.LauncherUI");
// 查找并点击"发现"按钮
var btn = text("发现").findOne(5000);
if (btn) {
    btn.click();
    toast("已点击发现");
} else {
    toast("未找到发现按钮");
}

实际应用场景

  • 自动签到:每天定时打开某 App,自动完成签到流程。
  • 自动抢红包:在微信、QQ 等社交软件中,自动识别并抢红包。
  • 自动化测试:批量测试 App 的不同功能点,提升测试效率。
  • 数据采集:自动浏览网页、采集信息并保存。

常见问题与解决方案

  1. 权限不足,脚本无法运行?
    • 解决方案:确保已授予 Auto.js 无障碍权限、悬浮窗权限。
  2. 控件找不到?
    • 解决方案:尝试使用不同的查找方式(如 text、desc、id),或增加等待时间。
  3. 脚本运行卡顿?
    • 解决方案:优化查找控件的逻辑,避免死循环。
  4. 兼容性问题?
    • 解决方案:针对不同手机和系统版本,适配控件查找和操作方式。

性能优化建议

  • 控件查找时尽量缩小查找范围,减少资源消耗。
  • 合理使用 sleep 和 waitFor,避免无效等待。
  • 多线程处理耗时操作,提升主流程响应速度。
  • 定期清理无用变量和对象,降低内存占用。

在线资源

最后感谢阅读!欢迎关注我,微信公众号:《鲫小鱼不正经》。欢迎点赞、收藏、关注,一键三连!!!

相关推荐
Dnelic-34 分钟前
Android 5G NR 状态类型介绍
android·5g·telephony·connectivity·自学笔记·移动网络数据
charlee4441 分钟前
行业思考:不是前端不行,是只会前端不行
前端·ai
Amodoro2 小时前
nuxt更改页面渲染的html,去除自定义属性、
前端·html·nuxt3·nuxt2·nuxtjs
Wcowin2 小时前
Mkdocs相关插件推荐(原创+合作)
前端·mkdocs
吗喽对你问好2 小时前
Android UI 控件详解实践
android·ui
伍哥的传说2 小时前
CSS+JavaScript 禁用浏览器复制功能的几种方法
前端·javascript·css·vue.js·vue·css3·禁用浏览器复制
lichenyang4532 小时前
Axios封装以及添加拦截器
前端·javascript·react.js·typescript
Trust yourself2433 小时前
想把一个easyui的表格<th>改成下拉怎么做
前端·深度学习·easyui
三口吃掉你3 小时前
Web服务器(Tomcat、项目部署)
服务器·前端·tomcat
Trust yourself2433 小时前
在easyui中如何设置自带的弹窗,有输入框
前端·javascript·easyui