在 Android 设备上用 adb 调试另一台 Android 设备的尝试

很多年前有过 adb 调试本机的想法,而且做过简单的尝试。具体步骤记不大清楚了,好像是在一台 Android 手机上安装了命令行环境,并把 adb 命令搞了进去,试图用它去连接本机的 adbd,但结果是没有成功。

前几天看到个 termux 的插件项目,叫 termux-adb,就想着再试一下。不过它也不能调试本机,只是说如果用 USB 把两台 Android 设备连接起来的话,其中一台作为 host,就可以使用 termux-adb 连接调试另一台了。

手上的两台设备,一台是 HUAWEI Mate 40 Pro,另一台是 Samsung Galaxy S21 Ultra。连接线是华为的原装充电数据线,有一头是 A 口,装了个最便宜的那种 A 转 C 的转接头,使得连接线成为 C 对 C 的制式。在后续的测试中,由于发现设备的行为跟线的方向是有关系,为了便于区分,这个被转接为 C 口的一端,仍将被称为 A 口。从平时的使用习惯可知,A 口通常是连接 PC 主机的,所以它连接的设备被我预测为应该是 host(测试前并不知道确定 host 的规则,因此作此预测)。

原本对华为翻身做主人寄予厚望,因此把 A 口连接到了华为手机上,C 口连接到三星手机上。接通后,三星手机表现为连接到了充电器,华为手机也进入反向充电模式,向三星手机提供电力。但在数据层面没有期望的协商交流。

将线两头拔下,颠倒后再两头重新插入,这时三星手机可以出现选择 MTP host 的一个对话框,华为手机则弹出了常规的询问是否允许计算机进行调试的对话框,可见此时主从名分已定。

在三星手机的 termux 命令行下,执行 termux-adb devices 命令多次,均未进入正常状态。第一次会显示 daemon 没有在运行,在 5037 端口上启动 daemon 且成功,但马上就跟着输出 list devices 的结果是 daemon 仍未运行,不能在 5037 端口连接到 daemon,具体错误是 Not a data message

第二次执行的话,会再次试图启动 daemon 到 5037 端口上,可是立刻出错,错误信息是 ADB server didn't ACK。后跟较为详细的日志,最后一条为 ...could not install *smartsocket* listener: Address already in use,结论信息是启动 daemon 失败,从而连接服务器以检查服务版本的操作也随之失败。

先记录于此,后续再排查。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注