智能电视/盒子ADB玩法升级:利用Tango ADB实现小程序远程卸载App、安装任意软件,无需电脑及数据线
适合需要兼容现有 ADB 环境的桌面应用;则彻底解放了 ADB,使其能够运行在浏览器、小程序等新兴平台。对于开发者而言,这意味着 ADB 不再是操作系统的外部依赖,而可以成为任何 JavaScript 应用的内置模块。参考链接WebUSB API 文档。
一、背景
众所周知,现如今市面上90%以上的家用电视或者盒子,本质上其实是一台安卓设备,而安卓有一个强大的调试工具——ADB(Android Debug Bridge)。通过ADB,你可以卸载任何预装App、安装任意APK、执行系统命令,甚至模拟遥控器按键。
但传统的ADB使用方式需要:一台电脑 + 安装ADB驱动 + 敲命令行。光是第一步就把大多数人劝退了。
我们开发了一款小程序 「微调试」,它把ADB的全部功能搬到了微信里。
![]() |
|
|
你只需要:
-
手机和电视连接到同一个Wi-Fi
-
在电视上开启“USB调试”
-
打开微信小程序,输入电视的IP地址
然后,你就可以在手机上:
-
✅ 一键卸载电视自带的垃圾应用
-
✅ 从微信聊天记录选择APK,直接推送到电视安装
-
✅ 浏览电视文件系统,上传/下载文件
-
✅ 执行Shell命令
-
✅ 实时截屏、查看日志、远程控制
完全不需要电脑,不需要数据线,甚至不用下载任何APP,用完即走!
不多废话,扫码即刻体验(如图片无法展示,可在微信中搜索“微调试”,或前往开源代码库https://gitee.com/doraemonhc/we-adb查看):

二、传统 ADB 编程方式的局限
大多数程序使用 ADB 的方式是:在系统中安装 Google 提供的 ADB 可执行文件,然后通过命令行参数调用它。
adb pull /sdcard/DCIM/Camera .
adb install app.apk
adb shell pm list packages
这种方式的缺点不言而喻:
-
环境依赖:系统必须预装 ADB 驱动,并提供可执行文件。
-
进程开销:每次调用都启动新进程,效率低。
-
输出解析困难:命令输出为字符串,不同设备格式不一致(例如
ls的输出)。 -
难以嵌入:无法在浏览器、小程序等受限环境中直接运行。
三、Tango ADB 的传输层设计
Tango ADB 是一个用 TypeScript 重新实现的 ADB 协议栈。它提供了两种底层传输模式,用于与 Android 设备建立通信。
2.1 Server Transport:对接 Google ADB Server
text
┌──────────┐ TCP:5037 ┌────────────┐ USB/TCP ┌────────┐ │ Tango │ ◄────────────────►│ ADB Server │ ◄────────────► │ 设备 │ │ Client │ │ (Google) │ │ adbd │ └──────────┘ └────────────┘ └────────┘
原理:Tango 直接连接本地已运行的 ADB Server的 TCP 5037 端口,发送标准 ADB 协议消息。这种方式仍然需要 Google ADB 可执行文件(用于管理设备连接),但 Tango 绕过了命令行,实现了更高效的编程式交互。
支持平台:
-
Node.js:✅
-
Electron:✅
-
Web:⛔需要一个本地化的“桥接”程序(将 TCP 转为 WebSocket)
2.2 Daemon Transport:直连设备 adbd(无需 ADB Server)
text
┌──────────┐ TCP:5555 ┌────────┐ │ Tango │ ◄────────────────►│ 设备 │ │ Client │ or WebUSB │ adbd │ └──────────┘ └────────┘
原理:Tango 直接与 Android 设备上的 adbd 守护进程建立连接(通过 TCP 5555 端口或 WebUSB),完全不需要 Google ADB 可执行文件。
优势:
-
无环境依赖:无需安装任何 ADB 工具。
-
支持 WebUSB:在现代浏览器中直接通过 USB 连接设备,无需驱动。
-
跨平台:同一套代码可运行在 Node.js、Electron、浏览器等环境。
支持平台:
| 平台 | USB 连接 | ADB over Wi-Fi |
|---|---|---|
| Web | ✅ (WebUSB) | ⛔需桥接程序 |
| Node.js | ✅ | ✅ |
| Electron | ✅ | ✅ |
四、两种传输模式对比
| 特性 | Server Transport | Daemon Transport |
|---|---|---|
| 是否需要 Google ADB | ❌ 需要 | ✅ 不需要 |
| 设备发现 | 通过 ADB Server 的 devices 列表 |
手动指定 IP 、通过 USB 枚举或 mDNS |
| 连接方式 | 连接本地 TCP 5037 | 直连设备 TCP 5555 或 WebUSB |
| Web 支持 | 需桥接程序 | USB 方式原生支持 WebUSB |
| 认证流程 | ADB Server 已处理 | Tango 内置 RSA 密钥交换 |
| 适用场景 | 复用现有 ADB 环境的桌面应用 | 纯 Web 环境、无需预装 ADB 的工具 |
可以看出,Daemon Transport不需要Google ADB Server,非常适合轻量化、无需预装 ADB 工具的纯 Web 环境。
然而,ADB 协议基于更底层的TCP,浏览器只支持 HTTP 或 WebSocket,因此无法直接复用后者的连接方式,尽管Chrome 曾尝试通过 chrome.socket 等 API 提供 TCP 支持,但随着 Chrome App 生态的废弃,这些 API 也基本退出了历史舞台。后续提出的 Direct Sockets API 至今仍争议不断,并且仅限于高隔离度的特殊 Web 应用,普通网页无法使用,因此ADB适配Web网页仍面临诸多难题。
好消息是,微信小程序提供了TCP套接字,能够直接使用 wx.createTCPSocket 建立 TCP 连接,这让我们可以绕过浏览器在套接字 API 上的限制,实现小程序端与设备 adbd 的直接通信,无需任何中间代理。
五、实际应用:微信小程序中的 ADB 工具
基于 Tango ADB 的 Daemon Transport,实现小程序直连adbd,其架构如下所示:
text
┌───────────────┐ TCP (wx.createTCPSocket) ┌─────────────┐ │ 微信小程序 │ ◄────────────────────────────────► │ 安卓设备 │ │ (Tango Client)│ │ (adbd) │ └───────────────┘ └─────────────┘
核心流程:
-
将小程序底层的 Socket 封装成
AdbDaemonDirectSocketsDevice,供上层调用 -
调用
wx.createTCPSocket()建立与设备 IP:5555 的 TCP 连接。 -
使用 Tango 内置的认证模块adbDaemonAuthenticate完成 ADB 协议握手(RSA 密钥交换)。
-
认证通过后,直接发送 ADB 协议帧(
OPEN、WRTE、CLSE等),并解析返回的OKAY、DATA等响应。
const device = new AdbDaemonDirectSocketsDevice({
host: '192.168.116.209',
port: 5555
});
let adbInstance = {
value: null
};
// 导出一个Promise,在需要时初始化adb实例
const initAdb = async () => {
if (adbInstance.value) {
return adbInstance;
}
try {
const connection = await device.connect();
const transport = await adbDaemonAuthenticate({
serial: 'device.serial',
connection,
credentialManager: new CustomLocalStorageCredentialManager('adb-credentials'),
});
adbInstance.value = new Adb(transport);
return adbInstance.value;
} catch (error) {
console.error('初始化adb失败:', error);
throw error;
}
};
六、总结
Tango ADB 通过两种传输模式,将 ADB 能力从命令行剥离出来:
-
Server Transport 适合需要兼容现有 ADB 环境的桌面应用;
-
Daemon Transport 则彻底解放了 ADB,使其能够运行在浏览器、小程序等新兴平台。
对于开发者而言,这意味着 ADB 不再是操作系统的外部依赖,而可以成为任何 JavaScript 应用的内置模块。
参考链接:
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)