Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>AutoLuaNew to Visual Studio Code? Get it now.
AutoLua

AutoLua

じ☆veつ错过的念

|
139 installs
| (1) | Free
Android 自动化脚本开发工具 - Lua 脚本编辑、设备连接、脚本运行调试
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

AutoLua VSCode 插件

Android 自动化脚本开发工具:Lua 脚本编辑、设备连接、真机调试、图色/OCR/寻路工具链,一键打包成独立 APK。

👤 作者:じ☆veつ错过的念   |   💬 QQ:956466259   |   👥 QQ群:758965836


目录

  • 安装
  • 快速开始
  • 连接设备
  • 界面导览
  • 快捷键
  • 项目结构
  • 运行机制
  • 开发工具
  • API 概览
  • 统一图色封装
  • 打包 APK
  • 常见问题

安装

1. 装插件:安装 .vsix 文件(命令面板 → 扩展: 从 VSIX 安装...)。

2. 装手机端:手机上安装 AutoLua APK 并启动。没有安装包的话,左侧 工具 → 帮助 → 调试APK下载 可以直接下载。

3. 装构建环境(只有要打包 APK 才需要):工具 → 帮助 → SDK更新,自动下载 jdk / android-sdk / gradle。已经有本地环境的话,在设置里指定 autolua.localBuildEnvPath 即可。


快速开始

① 初始化项目(F8)  →  ② 连接设备  →  ③ 写脚本  →  ④ F5 运行

① 初始化项目:按 F8,或左侧 工具 → 项目 → 初始化项目。会生成完整目录结构、main.lua、统一图色.lua、ui.json 和签名证书。

② 连接设备:左侧 设备 视图 → 扫描设备 → 点列表里的设备。详见下一节。

③ 写脚本:编辑 scripts/main.lua。打字有补全,鼠标悬停看函数说明,右侧 API 参考 可以搜函数。

④ 运行:F5。日志出现在底部 AutoLua日志 面板,报错的行可以直接点击跳转到源码。


连接设备

手机端默认监听 19800 端口。四种连法,在左侧 设备 视图里都能点:

方式 适用场景 说明
扫描设备 USB 数据线、模拟器 走 adb 找设备,点一下自动 adb forward 到本机端口再连 127.0.0.1,不依赖 WiFi
手动连接 同一局域网的手机 输入手机上显示的 IP:端口
ADB 网络连接 云手机(红手指等) 输入 host:port(云机端口每次开机都会变,要重新粘贴)
中继连接 手机和电脑不在同一个网络 通过中继服务器转发,跨网可用

USB 连接优先走 adb 通道传文件(adb push),比 WiFi 的 HTTP 上传快很多,也不受局域网限制。

云手机走 adb 隧道时,推送和截图会明显慢,这是隧道本身的带宽限制。追求流畅建议用中继连接。


界面导览

左侧活动栏(AutoLua 图标)

设备:设备列表、连接/断开、四种连接入口。连上以后显示 Android 版本和分辨率。

工具:分三组

  • 项目:初始化项目、打包 APK
  • 开发工具:图色工具、透明图制作、字库工具、OCR训练、A星区域、语音合成、地图拼接、UI 设计器、内存搜索、函数文档
  • 帮助:SDK更新、AAR更新、检查更新、调试APK下载、关于插件

API 参考:函数搜索面板,输入关键字直接查签名和示例。

底部日志面板

日志带时间戳,脚本报错的行是可点击的,点一下跳到对应源码位置。推送项目文件时这里会显示总进度条(含速度、当前文件名,可取消)。

顶部工具栏按钮:

按钮 功能
▶ / ⏸ 空闲时是运行;运行中变暂停;已暂停时是橙色三角(点=继续)
■ 停止脚本(空闲时变暗)
≡ 整理代码(会删除空行)
☰ 整理代码(保留空行)
// 注释 / 取消注释
↶ ↷ 撤销 / 重做(作用于当前编辑器)
清空 清空日志

暂停状态和手机悬浮球是同步的:在手机上按暂停,插件按钮也会跟着变,反之一样。


快捷键

快捷键 功能
F5 运行脚本
F6 停止脚本
F9 暂停 / 继续
F4 整理代码
F7 注释 / 取消注释
F8 初始化项目
Ctrl+Alt+C 连接设备
Ctrl+Alt+S 截图工具
Ctrl+Alt+J 跳转到日志位置

.lua 文件的编辑器右上角也有 ▶ ■ 按钮,右键菜单里有运行/停止/整理/注释。


项目结构

初始化项目(F8)会生成:

项目根目录/
├── project.json          项目配置(包名、应用名、版本、图标等,打包 APK 读它)
├── scripts/
│   ├── main.lua          入口脚本(运行时始终从这里开始)
│   └── 统一图色.lua       图色封装库,require 引用
├── res/
│   ├── ui.json           UI 设计器的界面配置
│   ├── images/           找图用的图片
│   ├── models/           YOLO 等模型文件
│   ├── flib/             点阵字库
│   └── tessdata/         Tesseract OCR 训练数据
├── .gitignore
└── README.md

运行时 scripts/ 和 res/ 会整体推送到手机,脚本里用相对路径引用资源即可。

入口固定是 scripts/main.lua。如果你当前打开的是库文件(比如 统一图色.lua),按 F5 会自动改成运行 main.lua,不会去执行库文件本身。


运行机制

按下 F5 之后的完整流程:

  1. 语法检查 — 本地先过一遍 Lua 语法,有错直接报行号,不浪费一次真机往返
  2. 增量推送 — 只推有变化的文件(按修改时间+大小判断),大文件(>2MB)自动分块并支持断点续传
  3. 推送校验 — 有文件没推成功就中止运行,避免拿着旧资源跑出难查的错
  4. 下发执行 — 脚本发到手机,日志实时回传
  5. 状态轮询 — 每 500ms 查一次手机上的脚本状态,脚本自己跑完了,插件按钮会自动回到空闲

重新连接设备会清空推送缓存,下次运行全量推一遍(防止换设备后漏文件)。


开发工具

工具 用途
图色工具 抓取真机截图,取色、框选区域、直接生成找图/找色代码
透明图制作 抠图做透明模板,提高找图容错
字库工具 点阵字库样本采集与管理(.flib)
OCR训练 Tesseract 字库训练
A星区域 地图标注 + A* 寻路调试
语音合成 文字转 mp3/webm,脚本里播报用
地图拼接 实时截图拼接大地图,配合寻路
UI 设计器 拖拽设计脚本界面,导出 res/ui.json
内存搜索 CE 风格内存搜索与修改(需 root)
函数文档 全部 API 的说明、参数、示例,以及 Lua 教程

API 概览

手机端提供 43 类 内置函数。下面是常用的一小部分,完整列表和参数说明看 工具 → 开发工具 → 函数文档(或右侧 API 参考 搜索)。

全部分类(点开)

基础函数、触摸函数、设备信息、截图函数、找色函数、找图函数、图像处理、坐标转换、OCR识别、Tesseract OCR、点阵字库、YOLO检测、A*寻路、画框调试、内存操作、文件操作、系统操作、应用管理、剪贴板、加密解密、JSON、HTTP、数据存储、定时器、设备控制、资源管理、无障碍服务、脚本控制、UI对话框、UI系统、选择器、多线程、Console日志、图片数据、编码转换、短信功能、计时器数组、工具函数、云控、Socket通信、HID键鼠、十六进制、分辨率自适应

基础与触摸

sleep(1000)                              -- 等待毫秒
log("内容")                               -- 输出到插件日志面板
toast("提示")                             -- 手机上弹提示

tap(x, y, [duration])                    -- 点击(click 是别名)
longPress(x, y, [duration])              -- 长按
swipe(x1, y1, x2, y2, [duration])        -- 滑动
tapRandom(x, y, rx, ry)                  -- 带随机偏移的点击

截图与找图找色

keepScreen()                             -- 锁定一张截图,多次查找共用(快很多)
releaseScreen()                          -- 释放

imgFind(x1, y1, x2, y2, imgPath, [sim], [isGray], [center], [direction])
imgFindAll(x1, y1, x2, y2, imgPath, [direction], [sim], [isGray], [center])
imgFindEX(...)                           -- 多尺度/增强版找图

colorGet(x, y)                           -- 取色
colorCmp(x, y, color, [sim])             -- 比色(单点)
colorCmpMulti(points, [sim])             -- 多点比色 "x|y|颜色,..."
colorFind(x1, y1, x2, y2, color, [direction], [sim])
colorFindMulti(x1, y1, x2, y2, mainColor, offsetColors, [direction], [sim])

文字识别

ocr([x1, y1, x2, y2])                    -- 内置 OCR 识别区域文字
ocrFind(text, [x1,y1,x2,y2], [allowError])

tessInit([lang], [dataPath])             -- Tesseract
tessOcr(x1, y1, x2, y2, [lang], [psm], [whitelist])

fontLibLoadNamed(name, path)             -- 点阵字库(游戏字体最准)
fontLibFind(text, x1, y1, x2, y2, [sim], [libName], [direction])

坐标转换(游戏坐标 ↔ 屏幕坐标)

-- 喂几组样本自动算出参数,样本 = {角色游戏X, 角色游戏Y, 目标屏幕X, 目标屏幕Y, 目标游戏X, 目标游戏Y}
coordCalibrate(screenCX, screenCY, samples)

getScreenPos(charGameX, charGameY, targetGameX, targetGameY)   -- 游戏坐标 → 屏幕像素
getNpcScreenPos(refScreenX, refScreenY, refCharX, refCharY, curCharX, curCharY)
getItemGameCoord(charGameX, charGameY, itemScreenX, itemScreenY)  -- 反算游戏坐标

系统与无障碍

shell(cmd)         shellSu(cmd)          -- 执行命令 / root 执行
hasRoot()                                -- 有没有 root
keyPress(keyCode)  keyBack()  keyHome()  keyRecent()
inputText("文字")                         -- 输入文字

clickText("确定")                         -- 无障碍:按文字点控件
clickId("com.x:id/btn")
waitText("加载完成", 10000)
findNodeByText("登录")

界面、多线程、网络

ui.load("res/ui.json")   ui.show()   ui.get("输入框")   ui.set("开关", true)
ui.alert("标题", "内容")   ui.confirm("标题", "确定吗")

thread.create(func)   thread.start(h)   thread.join(h)
channel.create()      lock.create()     atomic.create(0)

httpGet(url, [headers])   httpPostJson(url, table)   httpDownload(url, path)
socket.tcp()              hid.tap(x, y)              hex.crc16(data)

分辨率自适应

setBaseResolution(1280, 720)             -- 声明脚本按哪个分辨率写的
mapXY(x, y)                              -- 坐标自动换算到当前设备

统一图色封装

初始化项目 会在 scripts/ 下生成 统一图色.lua,把找图/找色/取色/比色/找字收进一个入口,还内置了等待出现、等待消失、点击后复检、共用截图这些常用套路。

local 图色 = require("统一图色")

-- 先建库(一次性写好参数)
图色.找图库 = { 飞鞋 = {"@im_1:飞鞋", 188,123,337,362, 1, 0.6, false, true} }
图色.字库   = { 确定 = {"确定", 0,0,720,1280, 0.9} }

-- 再按名字用
图色("找图", "飞鞋", {点击=true})                          -- 找到就点
图色("找字", "确定", {点击=true, 等待消失=8, 就近消失=true}) -- 点完确认弹窗消失
图色.等待出现("找图", "飞鞋", 10)                           -- 等它出现,最多10秒
图色.等待点击("找字", "确定", 10)                           -- 等出现→自动点

图色.截图()                                                -- 多次查找共用一张图
图色("找色", "红点")
图色.释放()

四种调用形式、建库列顺序、全部选项(点击/坐标/未找到坐标/等待消失/就近消失/区域/相似度/自动管理)都写在文件开头的注释里,分 9 节,直接打开 统一图色.lua 看。


打包 APK

工具 → 项目 → 打包 APK,在配置界面填包名、应用名、版本、图标,然后编译。产物是能独立运行的 APK,脚本和资源已经打进去。

前提:装好构建环境(帮助 → SDK更新),或在设置里把 autolua.localBuildEnvPath 指向已有的 jdk/android-sdk/gradle 目录。签名证书在初始化项目时已自动生成并备份到用户目录。


常见问题

扫描到设备但连不上? 确认手机上 AutoLua 已启动(服务在跑)。USB 连接会自动做端口转发,如果之前的转发是坏的,插件会先清掉再重建。

云手机推送/截图很慢? adb 隧道带宽有限,大图和整包推送会卡。用中继连接会顺畅得多。云机端口每次开机都会变,连不上先确认端口。

分辨率显示得不对? 插件显示的是物理分辨率(含导航栏区域),和某些截图工具去掉导航栏后的数值可能不一样。

keyPress 没反应? 注入按键需要 root:有 root 时任意键都能发;没 root 只能走无障碍,只支持返回/桌面/多任务(4/3/187),其它键 Android 不允许外部注入。

截图一直要重新授权? MediaProjection 授权跟着服务生命周期。关掉悬浮球会释放截图服务,下次启动需要重新授权,这是系统限制。

底部面板标签为什么是大写? 面板标签页被 IDE 自身样式(text-transform: uppercase)强制大写,所有插件都一样。本插件的标题用了 Unicode 数学字母绕开这条规则,所以显示的是 AutoLua日志。


更新

帮助 → 检查更新 查插件新版;SDK更新 / AAR更新 分别更新构建环境和 autolua-core.aar。遇到问题进 QQ 群反馈。

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft