这是我ya-webadb项目的演示,它可以使用ADB协议直接从Web浏览器(或Node.js)控制Android手机。

这个项目的起因是我想尝试使用WebUSB API,并且我有一部Android手机。它目前尚未达到生产就绪状态,我不建议普通用户使用。如果您有任何问题或建议,请在这里提交。

它被称为“ya-webadb”(Yet Another WebADB,另一个WebADB),因为已经有了几个类似的项目。例如:

然而,它们都相当简单且未得到维护,因此我决定制作自己的版本。

安全问题

从网页直接访问USB设备(尤其是您的手机)可能非常危险。Firefox的开发人员甚至拒绝实现WebUSB标准,因为他们认为它是有害的

然而,我对这个演示相当有信心,以下是几点原因:

  1. 与本地应用程序不同,Web应用程序无法在不经用户允许的情况下静默访问您的设备。除了设备自带的ADB连接验证弹窗之外,浏览器也会向用户请求权限,而且Web应用程序只能访问您选择的设备;
  2. 该项目的所有源代码都在GitHub上开源。您可以自行审查(或找值得信任且了解编程的人来审查);
  3. 该网站是通过GitHub Actions构建和部署的,以确保您所看到的与源代码完全一致。

兼容性

目前,只有基于Chromium的浏览器(如Chrome、Microsoft Edge和Opera)支持WebUSB API。正如之前所提到的,Firefox实现这一API的可能性较小。

常见问题解答

遇到“Unable to claim interface”错误

一个USB设备同时只能被一个应用程序访问。请确保:

  1. 官方ADB服务器未在运行(通过adb kill-server停止它)。
  2. 没有其他Android管理工具正在运行。
  3. 没有其他WebADB标签页已连接到您的设备。

我可以通过无线连接(ADB over WiFi)吗?

需要额外的软件来桥接连接,请参阅这个discussion