auto.js 中文文档 下载 App

Shell 命令与设备管理——通过 Root Shell 或 ADB 执行系统命令

什么时候需要 Shell

Auto.js 自带的 API 覆盖了绝大多数自动化场景,但以下操作需要 Shell 才能做到:

无 Root 模式(沙箱)

// 默认无 Root,只能执行有限命令
var result = shell("ls /sdcard");
log(result.stdout);  // 输出
log(result.code);    // 退出码

无 Root 时能执行的命令很少,主要是 Android 自带的基础工具。

有 Root 模式

// 需要设备已 Root 并授予 Auto.js Root 权限
var result = shell("pm list packages", true); // 第二个参数 = 是否用 Root
log(result.stdout);

// 修改系统设置(修改动画速度)
shell("settings put global window_animation_scale 0.0", true);
shell("settings put global transition_animation_scale 0.0", true);

ADB 模式

如果有电脑连接,可以通过 adb 执行命令:

// 手机端连接 adb 调试后
var result = shell("dumpsys window windows", false);

常用 Shell 命令速查

查看当前前台应用

var r = shell("dumpsys activity top | grep ACTIVITY");
log(r.stdout); // 输出类似 ACTIVITY com.taobao.taobao/.main.MainActivity

列出已安装应用

var r = shell("pm list packages");
log(r.stdout);

强制停止应用

shell("am force-stop com.taobao.taobao", true);

截屏(不使用 MediaProjection)

shell("screencap -p /sdcard/screenshot.png", true);

模拟按键(另一种方式)

shell("input keyevent 4", true);    // 返回键
shell("input text 'hello'", true);  // 输入文字
shell("input tap 540 1200", true);  // 点击

安全提示

有 Root 的脚本能力极大,但也最危险:

实战:自动关闭系统动画

auto.waitFor();

// 需要 Root
var needRoot = true;

function cmd(c) {
  return shell(c, needRoot);
}

cmd("settings put global window_animation_scale 0.0");
cmd("settings put global transition_animation_scale 0.0");
cmd("settings put global animator_duration_scale 0.0");
toast("动画已关闭,操作会快很多");