AutoGo 的脚本引擎扩展方案,为 AutoGo 提供 JavaScript 和 Lua 脚本语言支持,让开发者可以用熟悉的脚本语言编写自动化任务。
- 降低准入门槛 - 使用脚本语言开发,无需深入理解 Go 语言和 Android 开发,降低学习成本
- 代码保护 - 脚本代码易于混淆加密,有效保护业务逻辑
- 热更新支持 - 脚本可动态加载,无需重新编译即可更新功能
- 无痛迁移 - 可以无痛迁移其他平台的代码,复用现有的脚本代码库
- 双引擎支持:同时支持 JavaScript 和 Lua 脚本语言
- 丰富的 API:提供应用管理、设备控制、图像识别、OCR 等多种功能
- 方法注册系统:支持动态注册、重写和恢复方法
- 协程支持:Lua 引擎支持协程操作
- 风格包支持:提供 autogo 和 lrappsoft 两种风格包
- 懒人脚本兼容:lrappsoft 风格包兼容大部分懒人脚本的 Lua 方法
- 文档生成:可自动生成 API 文档
- 快速调试工具:提供现代化的 TUI 界面和强大的调试功能
我们提供了一个现代化的 AutoGo ScriptEngine 开发调试工具,为开发者提供友好的 TUI 界面和强大的调试功能,大大提高开发效率。
- 现代化 TUI 界面:直观的终端用户界面,实时日志输出显示,支持鼠标操作,彩色语法高亮
- 核心功能:项目管理、设备管理、脚本运行、实时调试、AG 管理
- 开发工具:代码风格支持(AutoGo、LrAppSoft、NodeJS),自动生成项目模板,配置文件管理,多设备支持
- 跨平台支持:Windows (AMD64)、macOS (ARM64 - M1/M2/M3)、macOS (AMD64 - Intel)
GitHub 仓库:https://github.com/ZingYao/autogo_scriptengine_debugger.git
- 从 Release 下载:访问 GitHub Releases 页面下载对应平台的版本
- 从源码构建:克隆仓库并使用 Go 1.21+ 编译
- 启动程序:运行
AutoGoScriptEngineDebugger - 初始化项目:按 i 键选择"项目初始化"
- 连接设备:进入"设备管理"选择要使用的设备
- 运行脚本:将脚本文件放到项目目录的 scripts/ 文件夹,然后选择"运行脚本"
- 项目管理:初始化、编译、部署 AutoGo 项目
- 设备管理:自动检测设备、连接设备、获取设备信息
- 脚本运行:支持 Lua 和 JavaScript 脚本
- 实时调试:日志输出、暂停、恢复、停止脚本
- AG 管理:自动下载和更新 AutoGo 工具
这个调试工具将大大简化您的开发流程,让您可以更专注于脚本逻辑的编写和调试。
go get github.com/ZingYao/autogo_scriptengine@v0.0.22🔥 重要提示:查看以下详细文档以获取完整的 API 参考和使用指南
📖 项目文档地址:https://zingyao.github.io/autogo_scriptengine/
推荐:查看美观的 HTML 在线文档,提供更好的阅读体验
使用方法:
# 生成/更新 HTML 文档
python3 scripts/convert_to_html.py如果您更喜欢阅读 Markdown 格式的文档,可以查看以下链接:
- JavaScript 引擎完整文档 - 包含所有 API、配置选项和高级用法
- app 模块 - 应用管理(启动、安装、卸载、强制停止等)
- device 模块 - 设备信息(分辨率、SDK 版本、屏幕方向等)
- motion 模块 - 触摸操作(点击、滑动、手势等)
- files 模块 - 文件操作(读写、复制、删除等)
- images 模块 - 图像处理(截图、找色、找图等)
- storages 模块 - 数据存储(键值对存储)
- system 模块 - 系统功能(剪贴板、通知等)
- http 模块 - 网络请求(GET、POST 等)
- websocket 模块 - WebSocket 客户端(连接、发送、接收消息等)
- media 模块 - 媒体控制(音量、播放等)
- opencv 模块 - 计算机视觉(图像处理、特征检测等)
- ppocr 模块 - OCR 文字识别
- console 模块 - 控制台窗口(显示、隐藏、日志输出等)
- dotocr 模块 - 点字 OCR 识别(基于字库的 OCR)
- hud 模块 - HUD 悬浮显示(脚本状态显示等)
- ime 模块 - 输入法控制(剪切板、文本输入等)
- plugin 模块 - 插件加载(加载外部 APK 调用 Java 方法)
- rhino 模块 - JavaScript 执行引擎(Rhino)
- uiacc 模块 - 无障碍 UI 操作(控件查找、点击、输入等)
- utils 模块 - 工具方法(日志、Toast、类型转换等)
- vdisplay 模块 - 虚拟显示(虚拟屏操作)
- yolo 模块 - YOLO 目标检测(v5/v8 模型)
- imgui 模块 - Dear ImGui GUI 库(窗口、按钮、输入框等控件)
- coroutine 模块 - 协程支持
- Lua 引擎完整文档 - 包含所有 API、配置选项和高级用法
- app 模块 - 应用管理(启动、安装、卸载、强制停止等)
- device 模块 - 设备信息(分辨率、SDK 版本、屏幕方向等)
- motion 模块 - 触摸操作(点击、滑动、手势等)
- files 模块 - 文件操作(读写、复制、删除等)
- images 模块 - 图像处理(截图、找色、找图等)
- storages 模块 - 数据存储(键值对存储)
- system 模块 - 系统功能(剪贴板、通知等)
- http 模块 - 网络请求(GET、POST 等)
- websocket 模块 - WebSocket 客户端(连接、发送、接收消息等)
- media 模块 - 媒体控制(音量、播放等)
- opencv 模块 - 计算机视觉(图像处理、特征检测等)
- ppocr 模块 - OCR 文字识别
- console 模块 - 控制台窗口(显示、隐藏、日志输出等)
- dotocr 模块 - 点字 OCR 识别(基于字库的 OCR)
- hud 模块 - HUD 悬浮显示(脚本状态显示等)
- ime 模块 - 输入法控制(剪切板、文本输入等)
- plugin 模块 - 插件加载(加载外部 APK 调用 Java 方法)
- rhino 模块 - JavaScript 执行引擎(Rhino)
- uiacc 模块 - 无障碍 UI 操作(控件查找、点击、输入等)
- utils 模块 - 工具方法(日志、Toast、类型转换等)
- vdisplay 模块 - 虚拟显示(虚拟屏操作)
- yolo 模块 - YOLO 目标检测(v5/v8 模型)
- imgui 模块 - Dear ImGui GUI 库(窗口、按钮、输入框等控件)
- coroutine 模块 - 协程支持
- json 模块 - JSON 处理
- Go 1.25.0 或更高版本
- AutoGo 框架(已在项目中集成)
- Android 设备(用于实际运行自动化脚本)
某些依赖包在特定的 Android 版本下可能会出现内存引用错误(Memory Reference Error)。如果遇到此类问题,可以尝试以下解决方案:
- 修改引入的包:根据您的 Android 版本,可以修改项目中引入的相关包
- 禁用问题模块:在引擎配置中禁用导致问题的特定模块
- 使用替代方案:某些功能可能有多种实现方式,可以尝试使用替代方案
在 Windows 环境下开发时,如果引入了超过 1 个以上的带 C 依赖的库,可能会导致编译命令过长,触发以下错误:
The command line is too long.
重要说明:这是受限于当前 AutoGo Extension 的实现,无法从根本上解决。
解决方案:
- 避免过多使用带 C 的库:尽量减少使用包含 C 代码的依赖包
- 减少依赖库的引用:遇到问题时,仅保留刚需依赖库,使用白名单手动指定需要加载的模块
- 切换开发环境:使用 macOS 或 Linux 系统进行编译
- **或者使用 WSL (Windows Subsystem for Linux) 环境进行开发
建议的开发流程:
- 在 Windows 环境下开发时,只启用核心模块(如 app、device、motion)
- 需要使用其他模块时,临时切换到 macOS/Linux 环境编译
- 或者使用 WSL (Windows Subsystem for Linux) 环境进行开发
详细的白名单使用示例和模块依赖列表,请查看:
- JavaScript 引擎文档 - 包含完整的白名单使用示例
- Lua 引擎文档 - 包含完整的白名单使用示例
如果遇到兼容性问题,建议:
- 检查您的 Android 设备版本和 SDK 版本
- 查看项目的 GitHub Issues,了解已知的兼容性问题
- 根据错误信息调整配置或代码
- 如有必要,可以 Fork 项目并根据您的环境进行修改
- AutoGo - Android 自动化框架(核心依赖)
- goja - JavaScript 解释器
- gopher-lua - Lua 解释器
基于 AutoGo 原生 API 开发的风格包,提供简洁、高效的 API 接口,方便开发者快速编写脚本。
基于懒人脚本 API 开发的风格包,兼容大部分懒人脚本的 Lua 方法,方便开发者快速迁移懒人的 Lua 脚本。
主要特点:
- 兼容懒人脚本的 API 接口
- 实现了大部分懒人的 Lua 方法
- 保持与懒人脚本的使用习惯一致
- 支持懒人脚本的核心功能
迁移指南:
- 替换导入路径:将原来的导入路径替换为 lrappsoft 风格包的路径
- 保持方法调用不变:由于 lrappsoft 风格包实现了与懒人脚本相同的方法名和参数,因此可以保持方法调用不变
- 测试脚本:运行迁移后的脚本,确保功能正常
在本次开发了 lrappsoft 风格包后,依赖架构发生了重大改变:
- 风格包分离:将 API 实现分为 autogo 和 lrappsoft 两种风格包,提供不同的编程风格选择
- 模块化设计:每个风格包内部采用模块化设计,便于维护和扩展
- 兼容性增强:通过 lrappsoft 风格包,增强了与懒人脚本的兼容性
- 依赖管理:优化了依赖管理,减少了不必要的依赖
本项目是 AutoGo 的扩展方案,通过封装 AutoGo 提供的原生 API,为开发者提供更灵活的脚本编写方式:
- AutoGo - 提供 Android 自动化的核心能力(无障碍服务、图像识别、触摸模拟等)
- ScriptEngine - 为 AutoGo 添加脚本语言支持,让开发者可以用 JavaScript 或 Lua 编写自动化脚本
- 风格包 - 提供不同风格的 API 接口,满足不同开发者的需求
如果您在使用过程中遇到任何问题、发现 bug 或者有功能建议,欢迎通过以下方式反馈:
我们非常欢迎您在 GitHub 上提交 Issue 来反馈问题。提交 Issue 时,请尽可能提供以下信息,以便我们更快地定位和解决问题:
必填信息:
- 问题描述:清晰描述您遇到的问题或建议
- 复现步骤:详细的操作步骤,让我们能够重现问题
- 预期行为:您期望看到的结果
- 实际行为:实际发生的情况
环境信息:
- AutoGo ScriptEngine 版本
- Go 语言版本
- Android 设备型号和系统版本
- 使用的脚本语言(JavaScript 或 Lua)
- 操作系统(Windows/macOS/Linux)
可选信息:
- 错误日志或堆栈信息
- 最小可复现代码示例
- 相关截图或录屏
发现 bug 时,请按照以下模板提交 Issue:
**Bug 描述**
简要描述 bug 的表现
**复现步骤**
1. 执行操作 A
2. 执行操作 B
3. 观察到错误 C
**预期行为**
描述您期望的正常行为
**实际行为**
描述实际发生的错误行为
**环境信息**
- AutoGo ScriptEngine 版本:
- Go 版本:
- Android 版本:
- 脚本语言:如果您有功能改进建议,请按照以下模板提交 Issue:
**功能描述**
描述您希望添加或改进的功能
**使用场景**
描述这个功能的使用场景和价值
**建议方案**
如果您有具体的实现想法,请描述您的建议方案提交 Issue 时,请使用合适的标签帮助我们分类:
bug- 报告 bugenhancement- 功能增强建议documentation- 文档相关question- 使用问题compatibility- 兼容性问题
GitHub Issues 地址:https://github.com/ZingYao/autogo_scriptengine/issues
在提交 Issue 前,建议先搜索现有的 Issues,确认是否已有类似问题或建议。
MIT License