没有一致的方式通过 TCP 连接 ADB

Posted

技术标签:

【中文标题】没有一致的方式通过 TCP 连接 ADB【英文标题】:No Consistent Way to Connect ADB over TCP 【发布时间】:2018-08-26 01:29:55 【问题描述】:

我正在调试一个 android 应用程序,当我插入应该与之通信的 Arduino 时,该应用程序通常会崩溃。因此,我需要与设备的 logcat 建立无线连接,这就是我在 Android 开发者网页上看到的ADB over TPC 的原因。

推荐的流程是:

C:\Users\User> cd AppData\Local\Android\sdk\platform-tools
C:\Users\User\AppData\Local\Android\sdk\platform-tools> adb kill-server
C:\Users\User\AppData\Local\Android\sdk\platform-tools> adb start-server
* daemon not running; starting now at tcp:5037
* daemon started successfully
C:\Users\User\AppData\Local\Android\sdk\platform-tools> adb tcpip 5555
restarting in TCP mode port: 5555
C:\Users\User\AppData\Local\Android\sdk\platform-tools> adb connect 10.20.5.160:5555

然而,典型的反应是:

unable to connect to 10.20.5.160:5555: cannot connect to 10.20.5.160:5555: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. (10060)

我无法始终如一地在 PC 和移动设备之间建立连接。在使用多个网络和设备的三周时间里,经过多次痛苦的尝试,我只能连接两次。

我深入研究了 *** 上发布的问题,并尝试了从使用 Android Studio 插件到转发端口到尝试其他几个端口到切换我设备的 Internet 的所有建议更改以获取 adb 连接。我仍然无法获得连接超过百分之一的时间。

当我在adb tpip <port> 之后查看设备的网络状态时,我没有发现设备试图寻找连接的证据:

C:\Users\User\AppData\Local\Android\sdk\platform-tools> adb shell
j3ltevzw:/ $ netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 ::ffff:10.20.5.160:4214 ::ffff:173.194.196.188: ESTABLISHED
udp     4288      0 adb shell ip -f inet addr show wlan0:68          10.20.5.1:67            ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State           I-Node Path
  ...    ...   ...        ...         ...                   ...
  ...    ...   ...        ...         ...                   ...

另外,当我尝试 ping 我的设备时,我通常会得到:

C:\Users\Benjamin\AppData\Local\Android\sdk\platform-tools> ping 10.20.5.160

Pinging 10.20.5.160 with 32 bytes of data:
Reply from 10.20.5.232: Destination host unreachable.
Reply from 10.20.5.232: Destination host unreachable.
Reply from 10.20.5.232: Destination host unreachable.
Reply from 10.20.5.232: Destination host unreachable.

Ping statistics for 10.20.5.160:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss)

我正在寻找的是一个可以运行并始终打开 tcp adb 连接的进程或文件,或者至少解释一下我的设置是无效的。想法?

更新 1:

我已经开始在这个问题上悬赏。我觉得用于调试连接的 ADB 软件的问题有两个:

    adb tcpip <port> 并不总是调用移动设备监听指定端口

    adb connect <ip>:<port>,我假设,没有被网络授予连接权限;我不是网络专家,但 ping 设备返回“无法访问目标主机”这一事实似乎有点不对劲

我将奖励第一个找到成功解决方案的人。看到拥有 ADB USB 连接可以让用户同时访问移动设备和主机的终端,确实没有任何借口不能在两者之间建立连接。

更新 2:

我最近在连接到 ADB 以及在我的学校网络上接收到成功的 ping 方面取得了更大的成功。请注意,此网络连接是不安全的,并且主机和移动设备位于不同的子网上。知道为什么这些条件会在我家中只使用一个子网的安全网络上起作用吗?

【问题讨论】:

ADB 的任何问题都可能是我的设备或网络路由器上的防火墙导致的吗? 你发布的ip看起来不像本地网络ip。他们通常以192.168.*.*开头?你是怎么得到那个ip的? 我使用的 IP 是在我的手机设置中找到的 IP 地址 About Phone > Status > IP address 以及我手机上的 adb shell 和终端仿真器返回的本地地址。上面的 IP 示例来自一周前的远程位置,但我的家庭 IP 遵循您现在描述的模式。 【参考方案1】:

尝试从头开始并按照以下步骤设置 ADB-over-tcp:

    在您的设备上关闭 USB 调试,然后再次打开(只是为了重置)。 使用adb kill-server 杀死您 PC 上的 ADB 服务器 使用 USB 电缆将您的设备连接到 PC 并输入 adb devices。这将再次自动重新启动 ABD 服务器。 在您的 PC 终端上输入 adb tcpip 5555。这会将您设备上的 adbd 守护进程切换到 tcp-ip 模式。 从 USB 断开您的设备。现在将您的设备连接到与您的 PC 相同的无线网络,或者使用相同的 wi-fi,或者将您的手机用作 热点。 确定手机的 ip。您可以在手机的 wi-fi 设置中执行此操作。如果您将手机用作热点,那么通常您的 ip 应该是192.168.43.1(不是必需的,但大多数时候它是相同的)。 使用adb connect <IP>通过tcp连接到ADB

这应该有望通过 tcp-ip 将您的设备连接到您的电脑。

【讨论】:

感谢您的帮助,但这几乎是我过去几个月一直在做的事情(如上述过程中所述)。将我的笔记本电脑用作热点可能会使与手机的联网更容易吗? 您使用的是哪个版本的安卓?在什么设备上? SM-J320V 运行 Android Nougat 7.1.1 当我的移动设备连接到笔记本电脑上的热点时,我能够连接到它。 除非有人可以让它在任何网络上运行,否则我现在就给你点赞。【参考方案2】:

我找到了一个适合我的解决方案,但我觉得它不应该,而且它可能不适用于其他有这些问题的人,所以它仍然不是我的目标。

无论如何,在看到 riyaz-ali 建议我应该通过电话使用移动热站的 IP 地址后,我意识到如果我是网络,任何网络问题都会得到解决,所以我将我的移动设备连接到笔记本电脑上的移动热点。

即时 ping 响应和使用常用命令的即时 ADB 连接。

【讨论】:

【参考方案3】:

刚刚发现自己处于同样的境地。昨天没问题,今天连接不上。

解决方案很简单,我意识到今天我已连接到 ***,这显然使我属于不同的网络。

因此,断开和连接到同一个 Wi-Fi 解决了这个问题。

【讨论】:

以上是关于没有一致的方式通过 TCP 连接 ADB的主要内容,如果未能解决你的问题,请参考以下文章

无法在家庭 WLAN 中通过 wifi 连接 ADB

ADB控制手机命令

adb--常用命令

adb 连接 Android 手机的两种方式

adb 两种连接方式

香橙派OrangePi Zero开发板安卓系统下网络ADB的使用方法有哪些?