AutoGo ScriptEngine
AutoGo 的脚本引擎扩展方案,为 AutoGo 提供 JavaScript 和 Lua 脚本语言支持,让开发者可以用熟悉的脚本语言编写自动化任务。
为什么选择 ScriptEngine
- 降低准入门槛 - 使用脚本语言开发,无需深入理解 Go 语言和 Android 开发,降低学习成本
- 代码保护 - 脚本代码易于混淆加密,有效保护业务逻辑
- 热更新支持 - 脚本可动态加载,无需重新编译即可更新功能
- 无痛迁移 - 可以无痛迁移其他平台的代码,复用现有的脚本代码库
功能特性
- 双引擎支持:同时支持 JavaScript 和 Lua 脚本语言
- 丰富的 API:提供应用管理、设备控制、图像识别、OCR 等多种功能
- 方法注册系统:支持动态注册、重写和恢复方法
- 协程支持:Lua 引擎支持协程操作
- 风格包支持:提供 autogo 和 lrappsoft 两种风格包
- 懒人脚本兼容:lrappsoft 风格包兼容大部分懒人脚本的 Lua 方法
- 文档生成:可自动生成 API 文档
安装
go get github.com/ZingYao/autogo_scriptengine@v0.0.19
📚 详细文档
🔥 重要提示:查看以下详细文档以获取完整的 API 参考和使用指南
📖 项目文档地址:https://zingyao.github.io/autogo_scriptengine/
🌐 HTML 在线文档
推荐:查看美观的 HTML 在线文档,提供更好的阅读体验
使用方法:
# 生成/更新 HTML 文档
python3 scripts/convert_to_html.py
📖 Markdown 文档
如果您更喜欢阅读 Markdown 格式的文档,可以查看以下链接:
JavaScript 引擎文档
模块文档
📖 Lua 引擎文档
模块文档
环境要求
- Go 1.25.0 或更高版本
- AutoGo 框架(已在项目中集成)
- Android 设备(用于实际运行自动化脚本)
兼容性说明
Android 版本兼容性
某些依赖包在特定的 Android 版本下可能会出现内存引用错误(Memory Reference Error)。如果遇到此类问题,可以尝试以下解决方案:
- 修改引入的包:根据您的 Android 版本,可以修改项目中引入的相关包
- 禁用问题模块:在引擎配置中禁用导致问题的特定模块
- 使用替代方案:某些功能可能有多种实现方式,可以尝试使用替代方案
Windows 开发环境
在 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) 环境进行开发
详细的白名单使用示例和模块依赖列表,请查看:
常见问题处理
如果遇到兼容性问题,建议:
- 检查您的 Android 设备版本和 SDK 版本
- 查看项目的 GitHub Issues,了解已知的兼容性问题
- 根据错误信息调整配置或代码
- 如有必要,可以 Fork 项目并根据您的环境进行修改
依赖
风格包说明
autogo 风格包
基于 AutoGo 原生 API 开发的风格包,提供简洁、高效的 API 接口,方便开发者快速编写脚本。
lrappsoft 风格包
基于懒人脚本 API 开发的风格包,兼容大部分懒人脚本的 Lua 方法,方便开发者快速迁移懒人的 Lua 脚本。
主要特点:
- 兼容懒人脚本的 API 接口
- 实现了大部分懒人的 Lua 方法
- 保持与懒人脚本的使用习惯一致
- 支持懒人脚本的核心功能
迁移指南:
- 替换导入路径:将原来的导入路径替换为 lrappsoft 风格包的路径
- 保持方法调用不变:由于 lrappsoft 风格包实现了与懒人脚本相同的方法名和参数,因此可以保持方法调用不变
- 测试脚本:运行迁移后的脚本,确保功能正常
依赖架构的重大改变
在本次开发了 lrappsoft 风格包后,依赖架构发生了重大改变:
- 风格包分离:将 API 实现分为 autogo 和 lrappsoft 两种风格包,提供不同的编程风格选择
- 模块化设计:每个风格包内部采用模块化设计,便于维护和扩展
- 兼容性增强:通过 lrappsoft 风格包,增强了与懒人脚本的兼容性
- 依赖管理:优化了依赖管理,减少了不必要的依赖
与 AutoGo 的关系
本项目是 AutoGo 的扩展方案,通过封装 AutoGo 提供的原生 API,为开发者提供更灵活的脚本编写方式:
- AutoGo - 提供 Android 自动化的核心能力(无障碍服务、图像识别、触摸模拟等)
- ScriptEngine - 为 AutoGo 添加脚本语言支持,让开发者可以用 JavaScript 或 Lua 编写自动化脚本
- 风格包 - 提供不同风格的 API 接口,满足不同开发者的需求
许可证
MIT License
反馈渠道
如果您在使用过程中遇到任何问题或有任何建议,请通过以下方式反馈:
欢迎提交 Issue 或 Discussion,我们会尽快回复并解决问题。