无法稳定地通过TCP连接ADB

11

我正在调试一个Android应用程序,在将其插入与之通信的Arduino时通常会崩溃。因此,我需要获取到该设备的日志记录器的无线连接,这就是我访问ADB over TPC的原因,如Android开发者网页上所示。

推荐的流程如下:

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和移动设备,但无法始终成功。尽管我深入研究了stackoverflow上发布的问题,并尝试了每一个建议的adb连接修改方法,包括使用Android Studio插件、转发端口、尝试多个端口以及切换设备互联网,但仍无法在大多数尝试中建立连接。

当我运行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 并不总是调用移动设备侦听指定端口。
adb connect :,我认为,没有得到网络连接的许可;我不是一个网络专家,但返回“目标主机不可达”的事实似乎有点不对劲。
我将奖励第一个找到成功解决方案的人。由于使用ADB USB连接使用户可以访问移动设备和主机的终端,因此真的没有借口不能在两者之间建立连接。
更新2:
最近我在学校网络中连接ADB以及收到了成功的ping回应。请注意,在这个网络中连接是不安全的,并且主机和移动设备位于单独的子网上。为什么在我只使用一个子网的安全网络上,这些条件会起作用呢?

ADB的任何问题都可能是由于我的设备或网络路由器上的防火墙引起的吗? - Benjamin Brownlee
你发的IP地址看起来不像是本地网络IP地址,通常以192.168.*.*开头。你是怎么获取这个IP地址的? - riyaz-ali
我正在使用的IP地址是在我的手机设置中找到的,路径为关于手机>状态>IP地址,同时也可以通过adb shell和终端模拟器在手机上返回本地地址。上面提到的IP示例来自我一周前的远程位置,但是我的家庭IP遵循您现在描述的模式。 - Benjamin Brownlee
4个回答

7
尝试从头开始设置ADB-over-tcp,按照以下步骤进行:
1.在设备上关闭USB调试,然后再次打开(仅用于重置)。
2.使用adb kill-server在PC上关闭ADB服务器。
3.使用USB电缆将您的设备连接到PC并键入 adb devices。这将自动重新启动ABD服务器。
4.在PC终端输入adb tcpip 5555 。这将把您的设备上的adbd 守护程序切换到tcp-ip模式。
5.断开USB连接。现在将您的设备连接到与PC相同的无线网络,可以是相同的Wi-Fi或使用手机作为热点。
6.确定手机的IP地址。您可以在手机的Wi-Fi设置中执行此操作。如果您正在使用手机作为热点,则通常您的IP应该是192.168.43.1(不是必需的,但大多数情况下都是相同的)。
7.使用adb connect <IP>通过tcp连接ADB。
这样应该可以通过tcp-ip将您的设备连接到PC。

我很感激你的帮助,但这基本上就是我过去几个月一直在做的(如上述过程所述)。使用我的笔记本电脑作为热点,可能会使手机连接网络更容易吗? - Benjamin Brownlee
你使用的是哪个版本的安卓系统?在什么设备上? - riyaz-ali
SM-J320V 运行 Android Nougat 7.1.1。 - Benjamin Brownlee
我会暂时给你信用,除非有人能够让它在任何网络上运行。 - Benjamin Brownlee
需要多久重新跳过这些繁琐的步骤?我刚刚在电话重启后不得不重复整个过程,这是有道理的,但如果我的手机连续开机几周,我可以期望一次 adb tcpip 5555 运行将服务器保持在 TCP 模式下“无限期”吗?电脑重启是否会产生相同的影响? - Kenny83
显示剩余5条评论

1

刚刚发现自己处于同样的情况。昨天没有问题,但今天无法连接。

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

因此,断开连接并重新连接到相同的Wi-Fi解决了问题。


我在很多天里都面临着同样的问题。Ivan的建议解决了我的问题。我只需要将移动设备与Wi-Fi断开连接,然后重新连接即可。它奏效了! - J.Koriya

1
我找到了一个适合我的解决方案,但我觉得这不应该是必要的,并且可能并不适用于其他遇到此类问题的人,所以它仍然不完全符合我的目标。
无论如何,在看到riyaz-ali建议我使用手机热点时应该使用哪个IP地址后,我意识到如果我成为网络,任何网络问题都将得到解决,因此我将移动设备连接到笔记本电脑上的移动热点。
立即出现ping响应和与广泛建议的命令的即时ADB连接。

0
我遇到了类似的问题。当我通过无线ADB连接到手机时,如果我启动了带有断开保护设置的VPN,ADB程序就会崩溃。但是,如果我取消断开保护设置并重新启动电脑,我就可以同时使用VPN和ADB而没有任何问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接