如何通过TCP连接ADB到Android设备?

879

我试图在一台Motorola Droid上调试一个应用程序,但是通过USB连接设备时出了一些问题。我的开发服务器是运行在Hyper-V下的Windows 7 64位虚拟机,所以我不能直接通过USB从客户机或主机连接。

我安装了几个不同的USB-over-TCP解决方案,但是连接似乎存在问题,因为ADB监视器反复报告“devicemonitor failed to start monitoring”。是否有一种方法可以通过网络直接从开发机器上的客户端连接到设备上的守护进程,而不是使用USB连接或其他可行的选项?


75
当通过 USB 连接时:运行 adb tcpip 5555。拔掉 USB,从 设置 > 关于手机 > 状态 查看手机 IP。现在运行 adb connect 192.168.x.x 就可以了。无需工具、无需软件,轻松搞定。 - andreszs
1
Andrew所说的 - 这些是来自Google android developer website 的官方说明,无需root。在我的非root HTC One m8上正常工作(当然需要启用开发者选项)。 - Jeff Ward
@Andrew,我能否使用像这个这样的应用程序在没有计算机和无根访问权限的Nexus 6上打开和关闭端口?当我在公共网络上并且不使用手机进行开发时,我担心会出现安全问题,因为端口5555是开放的。 - DaveTheMinion
除非你能找到一种在手机本身上执行adb命令的方法,否则你需要使用电缆运行adb命令以更改端口。肯定有某种已获取root权限的命令行应用程序可以运行adb命令。 - andreszs
3
两种方法 - 如何通过 WiFi 运行 Android 应用程序 - 简单教程 - Athira Reddy
显示剩余6条评论
37个回答

1

我已经让这个工作了。没有使用任何 USB 线。

  • 应用程序adb无线。
  • 运行它。这将设置IP和端口;然后在dos中

    cd C:\Program Files\Android\android-sdk\platform-tools adb connect "192.168.2.22:8000 "enter"
    

已连接。


1
如果你想通过按钮点击来实现它,那么:
  1. 在Android Studio中->设置/首选项->插件->浏览存储库
  2. 搜索“ADB wifi”
  3. 安装并重新启动Android Studio
  4. 使用USB将您的设备(启用USB调试)连接到计算机(每个会话只需执行一次此操作)
  5. 工具-> Android-> ADB WIFI-> ADB USB转WIFI(或使用提到的组合键。对于MacOS:ctrl + shift + w)

注意:如果它没有起作用:

  1. 您的WiFi路由器防火墙可能会阻止连接。
  2. ABD可能未安装在您的计算机上。

1
我只是按照以下步骤操作后,就可以连接到我的安卓设备了。
第一步:在安卓设备中打开终端窗口并执行以下命令。
1. su - 切换为超级用户。 2. setprop service.adb.tcp.port 5555 - 指定tcp端口号,此处为5555。 3. stop adbd - 停止adbb服务。 4. start adbd - 启动adbd服务。
第二步:通过ADB,在ADB配置的路径下执行以下命令。
adb connect 10.10.10.50:5555 - 这里的10.10.10.50是安卓设备的IP地址,5555是端口号。

1
我发现了一个方便的方法,想要分享一下。
对于 Windows 系统:
无需 root 权限,
只需连接手机和电脑到同一个热点或通过手机开启热点并将电脑连接至该热点。
获取你手机的 IP 地址(如果你是通过手机开启热点,则不需要执行此步骤)。
adb shell ip -f inet addr show wlan0

打开记事本
写下以下内容
@echo off
cd C:\android\android-sdk\platform-tools
adb tcpip 5555
adb connect 192.168.43.1:5555

将上面给出的位置更改为您的PC包含的abd.exe文件所在位置。
将IP更改为您的手机IP。
注意:上面给出的IP是Android设备在创建热点时的基本IP。如果您连接到WiFi网络并且每次连接到热点时设备的IP都在更改,则可以通过WiFi设置进行配置使其静态。谷歌一下。
现在将文件保存为ABD_Connect.bat(MS-DOS批处理文件)。
将其保存在某个地方,并引用一个快捷方式到桌面或开始按钮。
先通过USB连接,然后尝试运行一些应用程序。之后,每当您想要无线连接时,双击该快捷方式。
注意:有时您需要每次打开快捷方式调试应用程序。因此,在桌面上为快捷方式制作快捷键将更加方便。我已经制作了一个类似于Ctrl + Alt + S的快捷键。因此,每当我想要调试时,我会按Shift + F9和Ctrl + Alt + S。
注意:如果在cmd窗口上发现device = null错误,请检查您的IP,可能已更改。

1

在我的系统上,它是这样的:

在我的 Android 设备中的 Linux shell 中,简单的 "ifconfig" 命令没有给我我的 IP 地址。我不得不输入:

ifconfig eth0

-或-

netcfg

来获取我的 IP 地址。(我知道 eth0 已经配置好了,因为我在我的 dmesg 中看到了它。) 然后我执行了:

setprop service.adb.tcp.port -1

stop adbd

start adbd

然后在运行 Eclipse 3.7.1 的 Win7 电脑上。我打开了一个命令提示符到

\android-sdk\platform-tools>

而没有以管理员身份运行。然后我执行了

adb connect 12.345.678.90

我从未放置过端口。如果我执行了

adb tcpip 5555

它会说找不到设备,然后我的 "adb devices" 列表中什么也没有出现。也就是说,只有在我不执行上面的 tcpip 命令时才能正常工作。

我可以使用 "adb shell" 干预我的 Android 设备。但是现在我的 Android 设备没有出现在我的 Run->Run Configurations->Target 选项卡中。另一方面,如果我将 Target 选项卡设置为自动,则当我通过 Run->Run 运行我的应用程序时,它确实在我的 Android 设备上运行,即使我的 Android 设备甚至没有列为我的目标之一。


0
这是一个适用于 Mac/Linux 的一行命令,可以通过 Wi-Fi 连接到 Android 设备,但首先必须通过 USB 连接到设备。
# sleep 5 is to wait for the device to restart listening.
adb kill-server && adb tcpip 5555 && sleep 5 && adb shell ip route | awk '{print $9}' | xargs adb connect

-34

在放弃通过TCP直接连接设备的可能性后,我最终成功地让Eltima USB转以太网软件工作了。我基本上已经决定,只能连接到模拟器而无法跨网络连接到设备。


27
当时它是唯一的解决方案。 - JDM

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