在移动自动化领域,ADB(Android Debug Bridge)一直是最核心的底层工具之一。它允许开发者通过命令行对 Android 设备进行深度控制,包括点击、滑动、启动应用、执行 Shell 命令等操作。在冰狐 JavaScript 脚本引擎中集成了完整的 ADB 模块,使得用户无需依赖外部环境,即可在脚本中直接调用 ADB 功能,实现稳定高效的自动化任务。(建议使用Shizuku来开启adb功能,不需要连接手机和电脑)
本文将详细介绍如何使用内置的 ADB API,并提供一个完整的实战 Demo,帮助开发者快速上手。
一、冰狐平台 ADB 模块简介
冰狐平台提供的 adb 模块封装了常用的 ADB 操作,所有接口均为同步或异步安全设计,适用于脚本自动化场景。主要功能包括:
adb.init():初始化 ADB 连接(通常用于连接本地设备)adb.connect(host, port):连接远程 ADB 服务(如云手机)adb.click(x, y):在屏幕坐标 (x, y) 处点击adb.swipe(x1, y1, x2, y2, duration):从 (x1,y1) 滑动到 (x2,y2)adb.home()/adb.back()/adb.recentApps():模拟系统按键adb.execCmd(cmd):执行任意 ADB Shell 命令adb.close():关闭 ADB 连接
⚠️ 注意:使用 ADB 功能前,需确保设备已开启 USB 调试 或已通过网络 ADB 授权。在冰狐平台中,若设备通过 Shizuku 或 root 权限运行,部分 ADB 功能可绕过调试限制。
二、使用前提与权限说明
在冰狐平台中使用 ADB 模块,需满足以下条件之一:
- 设备已开启 USB 调试 ,并通过
adb connect连接; - 设备安装 Shizuku 并授权 ,此时可通过
shizuku模块间接调用 ADB 命令; - 设备已 Root ,可直接使用
root模块替代部分 ADB 功能。
本文示例基于 本地设备已开启 USB 调试 的场景,使用 adb.init() 自动连接。
三、实战 Demo:自动清理后台并打开x信
下面是一个完整的脚本示例,演示如何使用冰狐的 ADB 模块实现以下流程:
- 初始化 ADB 连接;
- 返回桌面;
- 打开最近任务列表;
- 清理所有后台应用;
- 启动x信;
- 在x信主界面随机滑动三次;
- 退出脚本。
✅ 本脚本仅使用冰狐平台提供的 JS API,不依赖任何第三方库或 Auto.js 等其他框架。
javascript
/**
* 冰狐 ADB 自动化脚本 Demo
* 功能:清理后台 → 启动x信 → 随机滑动
* 作者:冰狐用户
* 日期:2026-03-24
*/
function main() {
console.log("开始执行 ADB 自动化脚本...");
// 步骤1:初始化 ADB(自动连接本地设备)
var ret = adb.init();
if (!ret) {
console.error("ADB 初始化失败,请检查 USB 调试是否开启");
return -1;
}
console.log("ADB 初始化成功");
// 步骤2:返回桌面
adb.home();
sleep(1000); // 等待动画结束
// 步骤3:打开最近任务
adb.recentApps();
sleep(1500);
// 步骤4:清理所有后台(模拟多次上滑)
for (var i = 0; i < 3; i++) {
adb.swipe(rsScreenWidth / 2, rsScreenHeight * 0.8, rsScreenWidth / 2, rsScreenHeight * 0.2, 300);
sleep(800);
}
console.log("后台清理完成");
// 步骤5:返回桌面
adb.home();
sleep(1000);
// 步骤6:启动x信(通过 adb shell am start)
var pkg = "com.tencent.mm";
var cmd = `am start -n ${pkg}/.ui.LauncherUI`;
var result = adb.execCmd(cmd);
if (result.indexOf("Error") !== -1) {
console.error("启动x信失败:" + result);
return -2;
}
console.log("x信启动成功");
sleep(3000); // 等待x信加载
// 步骤7:在x信主界面随机滑动三次
for (var j = 0; j < 3; j++) {
var x1 = randInt(rsScreenWidth * 0.3, rsScreenWidth * 0.7);
var y1 = randInt(rsScreenHeight * 0.6, rsScreenHeight * 0.8);
var y2 = randInt(rsScreenHeight * 0.2, rsScreenHeight * 0.4);
adb.swipe(x1, y1, x1, y2, randInt(300, 600));
console.log(`第 ${j + 1} 次滑动`);
sleep(2000);
}
// 步骤8:返回桌面并结束
adb.home();
sleep(1000);
console.log("脚本执行完毕");
// 可选:关闭 ADB 连接(非必须,脚本结束会自动释放)
// adb.close();
return 0;
}
四、关键 API 解析
1. adb.init()
- 用于初始化本地 ADB 连接。
- 成功返回
true,失败返回false。 - 通常只需调用一次。
2. adb.execCmd(cmd)
- 执行任意 Shell 命令,如
am start、input tap、dumpsys等。 - 返回命令执行结果字符串。
- 注意:命令需符合 Android Shell 语法。
3. 屏幕尺寸常量
rsScreenWidth和rsScreenHeight是冰狐内置常量,代表当前设备分辨率。- 可用于计算相对坐标,提升脚本兼容性。
4. sleep(ms)
- 冰狐全局函数,用于延时(单位:毫秒)。
- 在 ADB 操作后必须加入适当等待,避免操作过快导致失败。
五、优势与适用场景
使用冰狐 ADB 模块相比传统方案有以下优势:
- 无需 PC 环境:脚本直接在手机端运行,不需要连接手机和pc,通过冰狐引擎直接调用 ADB;
- 与 UI 自动化互补:当无障碍无法识别控件时,可用 ADB 坐标操作兜底;
- 支持远程设备 :通过
adb.connect("192.168.x.x", 5555)控制云手机; - 高稳定性:ADB 命令底层可靠,不受界面变化影响。
典型应用场景包括:
- 游戏领域
- 设备批量管理
- 云手机集群控制
- 系统级自动化(如自动开关机、网络切换)
六、注意事项
- 权限问题:非 root 设备必须开启"USB 调试"和"无线调试"(Android 11+);
- 坐标适配:不同设备分辨率不同,建议使用比例计算坐标;
- 异常处理 :务必检查
adb.init()返回值,避免空指针; - 性能开销 :频繁调用
execCmd会有一定延迟,应合理设计流程。
七、结语
使用封装 过的ADB 模块,为开发者提供了一种强大而简洁的自动化手段。结合其内置的 rsScreenWidth、sleep、randInt 等全局函数,可快速构建跨设备、高兼容性的自动化脚本。本文提供的 Demo 虽简单,但展示了从连接、控制到交互的完整链路。开发者可在此基础上扩展更多功能,如自动登录、数据采集、批量测试等,充分发挥 ADB 在移动端自动化的潜力。