ADB over TCP/IP 在没有连接 USB 电缆的情况下无法工作

Posted

技术标签:

【中文标题】ADB over TCP/IP 在没有连接 USB 电缆的情况下无法工作【英文标题】:ADB over TCP/IP not working without USB cable connected 【发布时间】:2020-07-02 14:18:22 【问题描述】:

我可以使用 USB 数据线通过 ADB 连接到我的智能手机, 我还可以通过 tcp/ip 连接到同一部智能手机 adb 连接 192.168.1.110 而 USB 电缆仍然连接。

但是,一旦我断开电缆,我就失去了 tcp/ip 连接,设备似乎“离线”(由于“adb devices”命令)并且我无法通过网络重新连接,直到我重新连接电缆。

我的步骤是(这样工作的):

    连接 USB 数据线 adb kill-server adb tcpip 5555 adb connect 192.168.1.110(这里连接成功!) 断开 USB 电缆 => 我与智能手机的网络连接断开

如果在第 3 步之后我断开电缆,第 4 步不起作用(端口 5555 已关闭)

似乎 adbd 守护程序仅在连接电缆时才运行。

由于我的设备没有植根,我没有找到任何方法来强制 adbd 守护程序在不连接 USB 电缆的情况下启动。

有什么想法吗?

[更新] 我刚刚尝试扫描智能手机以查找打开的 tcp 端口,但我一运行命令就发现: 亚行 tcpip 5555 扫描发现5555端口打开 但是一旦我断开 USB 电缆,我再次运行扫描,发现端口 5555 已关闭 这证实了一旦我断开 USB 电缆不知道为什么但 adb 在端口 5555 上停止响应或守护进程本身被杀死或类似情况

[更新] 我刚刚在另一台 android 设备(华硕平板电脑)上执行了相同的步骤,它运行良好,当我断开电缆时,tcp 端口保持打开状态,所以问题不在于我正在遵循的步骤,而是其他的问题

[更新] 我发现其他有类似问题的帖子,这是其中之一: adb connection by wifi getting killed when a new USB attached/detached ,不幸的是我不能按照他说的做,因为我的智能手机没有植根,我也处于与 Osama 在那篇帖子中发表评论相同的情况

【问题讨论】:

尝试连接usb并运行adb kill-server然后adb tcpip 4455 更改端口不会改变结果,我看到 tcp 端口打开,我断开电缆,端口关闭 【参考方案1】:

下面的命令让你总是得到 5555 作为默认端口号,试试这个

确保您已将 wifi 配置为“自动连接”,同时在开发人员手册下设置始终允许来自网络的 adb

adb root
adb remount
adb shell setprop persist.service.adb.enable 1
adb shell setprop persist.adb.tcp.port 5555


adb reboot

【讨论】:

【参考方案2】:

你好,我可以解决问题

首先用电缆连接你的设备(USB调试)如果它询问调试,点击手机上的允许

现在打开 cmd

输入 cd 'scrcpy 的位置'

键入以下内容

adb tcpip 5555

如果它再次要求您执行 adb tcpip 5555 再次执行此操作

adb connect

通过拔下电缆断开设备

scrcpy -s

完成!问题解决了

【讨论】:

【参考方案3】:

首先连接您的设备并检查它是否已连接 运行

adb devices

那么 运行

adb tcpip 5555

现在断开您的设备 USB 数据线并转到设置并找出您手机的 IP 地址并运行 adb 连接 your_phone_ip_address

eg. adb connect 192.168.1.102

换成你自己的ip,用adb devices检查是否连接 如果它不起作用,那么问题一定是其他问题

【讨论】:

谢谢,正如我在第一次 [更新] 中所写,当我运行“adb tcpip 5555”时,如果我扫描智能手机的 tcp 端口,我发现端口 5555 已打开,但一旦我断开电缆端口结果关闭。所以任何连接它的尝试都会失败。【参考方案4】:

您可能没有运行 ADB 服务器。

连接 USB 数据线后, 做:adb kill-server && adb start-server && adb tcpip 5555 && adb connect 192.168.1.110

连接成功后,即可断开连接线。

注意:在运行 adb devices 时,设备名称现在的格式为 IP:PORT,而不是最初的字母数字字符串。

【讨论】:

不幸的是,情况并非如此,我没有多个 adb,我只在没有安装其他任何东西的机器上使用平台工具,我已经尝试过你的建议,但它没有如果我在“adb connect”命令之前拔下电缆,则连接,如果我将电缆插入,它会连接......但是一旦我断开电缆,我就会松开 tcp/ip 连接 我已经尝试过了,得到了和你一样的行为。但是,我找到了解决它的方法。更新我的答案以反映我是如何解决它的。 我也更新了我的问题,因为它有点困惑,现在你可以看到我正在遵循的步骤,并且它们有效,所以我的问题不是 adb 服务器没有运行,问题是当我断开电缆时,似乎 adb 守护程序(智能手机上的守护程序,而不是 PC 上的服务器)被杀死或端口 5555 关闭 请复制粘贴我更新的解决方案。有用。久经考验。 Taaka,我相信你,如果我用我的华硕平板电脑运行它,它也可以在这里工作,但它不适用于我的 Honor 智能手机,你无法测试它,因为你没有同一台设备【参考方案5】:

我也在荣耀手机上进行测试。我找到了解决这个问题的方法。您可以尝试开启Allow ADB debugging in charge only mode,关闭Always prompt when connecting to USB。它应该可以解决问题。

这是解决方案的reference。

【讨论】:

以上是关于ADB over TCP/IP 在没有连接 USB 电缆的情况下无法工作的主要内容,如果未能解决你的问题,请参考以下文章

循环使用 USB 电缆时,Android ADB-over-WiFi 仍会断开连接(?!?)

ADB连接设备进行调试

ADB 无线连接设备

Android Things:Raspberry Pi 上的 ADB over USB

adb connect命令连接多个Android设备

TCP/IP Over USB 用USB传输以太网数据,给你的MCU加个网卡