AutoGo ScriptEngine
AutoGo 的脚本引擎扩展方案,为 AutoGo 提供 JavaScript 和 Lua 脚本语言支持,让开发者可以用熟悉的脚本语言编写自动化任务。
为什么选择 ScriptEngine
- 降低准入门槛 - 使用脚本语言开发,无需深入理解 Go 语言和 Android 开发,降低学习成本
- 代码保护 - 脚本代码易于混淆加密,有效保护业务逻辑
- 热更新支持 - 脚本可动态加载,无需重新编译即可更新功能
功能特性
- 双引擎支持:同时支持 JavaScript 和 Lua 脚本语言
- 丰富的 API:提供应用管理、设备控制、图像识别、OCR 等多种功能
- 方法注册系统:支持动态注册、重写和恢复方法
- 协程支持:Lua 引擎支持协程操作
- 文档生成:可自动生成 API 文档
安装
go get github.com/ZingYao/autogo_scriptengine@v0.0.9
📚 详细文档
🔥 重要提示:查看以下详细文档以获取完整的 API 参考和使用指南
🌐 HTML 在线文档
推荐:查看美观的 HTML 在线文档,提供更好的阅读体验
使用方法:
# 生成/更新 HTML 文档
python3 scripts/convert_to_html.py
📖 Markdown 文档
如果您更喜欢阅读 Markdown 格式的文档,可以查看以下链接:
JavaScript 引擎文档
模块文档
📖 Lua 引擎文档
核心文档
模块文档
环境要求
- Go 1.25.4 或更高版本
- AutoGo 框架(已在项目中集成)
- Android 设备(用于实际运行自动化脚本)
兼容性说明
Android 版本兼容性
某些依赖包在特定的 Android 版本下可能会出现内存引用错误(Memory Reference Error)。如果遇到此类问题,可以尝试以下解决方案:
- 修改引入的包:根据您的 Android 版本,可以修改项目中引入的相关包
- 禁用问题模块:在引擎配置中禁用导致问题的特定模块
- 使用替代方案:某些功能可能有多种实现方式,可以尝试使用替代方案
Windows 开发环境
在 Windows 环境下开发时,如果引入了超过 1 个以上的带 C 依赖的库,可能会导致编译命令过长,触发以下错误:
The command line is too long.
重要说明:这是受限于当前 AutoGo Extension 的实现,无法从根本上解决。
解决方案:
- 避免过多使用带 C 的库:尽量减少使用包含 C 代码的依赖包
- 减少依赖库的引用:遇到问题时,仅保留刚需依赖库,使用白名单手动指定需要加载的模块
- 切换开发环境:使用 macOS 或 Linux 系统进行编译
示例:使用白名单手动指定依赖
// JavaScript 引擎示例
import "github.com/ZingYao/autogo_scriptengine/js_engine"
config := js_engine.DefaultConfig()
config.WhiteList = []string{"app", "device", "motion"} // 只加载必需的模块
engine := js_engine.NewEngine(&config)
// Lua 引擎示例
import "github.com/ZingYao/autogo_scriptengine/lua_engine"
config := lua_engine.DefaultConfig()
config.WhiteList = []string{"app", "device", "motion"} // 只加载必需的模块
engine := lua_engine.NewLuaEngine(&config)
建议的开发流程:
- 在 Windows 环境下开发时,只启用核心模块(如 app、device、motion)
- 需要使用其他模块时,临时切换到 macOS/Linux 环境编译
- 或者使用 WSL (Windows Subsystem for Linux) 环境进行开发
常见问题处理
如果遇到兼容性问题,建议:
- 检查您的 Android 设备版本和 SDK 版本
- 查看项目的 GitHub Issues,了解已知的兼容性问题
- 根据错误信息调整配置或代码
- 如有必要,可以 Fork 项目并根据您的环境进行修改
依赖
与 AutoGo 的关系
本项目是 AutoGo 的扩展方案,通过封装 AutoGo 提供的原生 API,为开发者提供更灵活的脚本编写方式:
- AutoGo - 提供 Android 自动化的核心能力(无障碍服务、图像识别、触摸模拟等)
- ScriptEngine - 为 AutoGo 添加脚本语言支持,让开发者可以用 JavaScript 或 Lua 编写自动化脚本
许可证
MIT License