$engine - 脚本引擎

  • 更新时间:2026-02-28 22:38:43

脚本引擎

脚本引擎是全局唯一的对象,主要负责调度脚本的运行,脚本任务创建、运行、暂停、继续等操作都可以通过脚本引擎对象完成。

重要提示

在开发环境(AG.apk)中通过$engine.runCode(源码)的方式可以传入源码,但是请注意:打包后的apk,代码会被转换为混淆码,因为打包后的apk只能执行混淆码,所以直接传入源码的方式无法执行。

此时如果调用$engine.runCode(源码)会报错,如果传入的是代码路径,如果代码路径是相对项目的并且被打包到apk中,则可以直接通过执行代码路径的方式执行代码,只要是项目中的代码,打包的时候就会被转换成混淆码,因此$engine.run(项目中js路径)可以正常执行。

想要在打包后的apk中直接执行源码,则需要对接AG服务器的后端接口来实现,在打包的apk中通过接口将源码转换为混淆码,之后就能调用$engine.runCode(源码)来执行。

运行(脚本路径)

运行路径中的代码

  • 参数 : 脚本路径 {字符串} 脚本路径
  • 返回 : {字符串} 任务ID
  • 版本 : 1.6.8
定义 任务ID = $引擎.运行("/sdcard/脚本.js");

运行(js文件)

运行路径中的代码

  • 参数 : js文件 {File} 代码文件
  • 返回 : {字符串} 任务ID
  • 版本 : 1.6.8
定义 任务ID = $引擎.运行($文件.打开("/sdcard/脚本.js"));

运行代码(代码)

运行代码

  • 参数 : 代码 {字符串} 代码
  • 返回 : {字符串} 任务ID
  • 版本 : 1.6.8
定义 任务ID = $引擎.运行代码(`
    提示("提示","我被运行了");
`);

运行代码(脚本路径, 代码)

运行代码

此处传入的路径只是决定了$task中的上下文环境路径,但不是通过该路径读取文件内容,因此可以随意填写。

  • 参数 : 脚本路径 {字符串} 路径(决定了$task的路径:$task.getPath())
  • 参数 : 代码 {字符串} 代码
  • 返回 : {字符串} 任务ID
  • 版本 : 1.6.8
定义 任务ID = $引擎.运行代码("/sdcard/main.js",`
    提示("提示","我被运行了");
`);

暂停(任务ID)

暂停运行

该方法会暂停未执行完毕的所有脚本

  • 参数 : 任务ID {字符串} 任务ID
  • 版本 : 1.6.8
定义 任务ID = $引擎.运行("/sdcard/脚本.js");
//暂停运行
$引擎.暂停(任务ID);
睡觉(2000);
//继续运行
$引擎.开始(任务ID);

暂停了(任务ID)

判断任务是否处于暂停状态

遍历所有任务列表,查询这个id的任务是否处于暂停状态

  • 参数 : 任务ID {字符串} 任务id
  • 返回 : {布尔值} false:运行态; true:暂停态; null:未找到;
  • 版本 : 1.6.8
定义 暂停了 = $引擎.暂停了(任务ID);
如果(暂停了!=空){
    如果(暂停了){
        信息("任务已暂停");
    }否则{
        信息("任务正在跑");
    }
}否则{
    信息("未找到任务");
}

开始(任务ID)

开始运行

该方法会继续运行暂停的脚本

  • 参数 : 任务ID {字符串} 任务ID
  • 版本 : 1.6.8
定义 任务ID = $引擎.运行("/sdcard/脚本.js");
//暂停运行
$引擎.暂停(任务ID);
睡觉(2000);
//继续运行
$引擎.开始(任务ID);

罗列()

列出所有的任务信息

  • 返回 : {JsTaskInfo[]} 任务列表信息
  • 版本 : 1.6.8
定义 任务列表 = $引擎.罗列();
循环(定义 任务 关于 任务列表){
    日志(任务);
}

停止(任务ID)

停止指定任务

  • 参数 : 任务ID {字符串} 任务id
  • 版本 : 1.6.8
定义 任务ID = $引擎.运行("/sdcard/脚本.js");
$引擎.停止(任务ID);

停止所有(是否退出系统)

停止所有任务

  • 参数 : 是否退出系统 {布尔值} 是否退出系统
  • 版本 : 1.6.8
$引擎.停止所有(真);//会杀死app

停止所有()

停止所有任务

  • 版本 : 1.7.0
$引擎.停止所有();

罗列任务()

获得任务列表信息

  • 返回 : {$任务[]} 任务列表信息
  • 版本 : 1.6.8
定义 任务列表 = $引擎.罗列任务();
循环(定义 任务 关于 任务列表){
    日志(任务);
}

有(任务ID)

停止指定任务

  • 参数 : 任务ID {字符串} 任务id
  • 版本 : 1.6.8
//运行脚本的时候会返回任务ID
定义 任务ID = $引擎.运行("/sdcard/脚本.js");
//怕判断任务是否存在(任务结束后会自动销毁)
定义 有任务 = $引擎.有(任务ID);
如果(有任务){
    $引擎.停止(任务ID);
}