adb通过TCP/IP来调试Android设备

对Android比较熟悉的开发人员,对adb通过USB(USB连接Android设备)调试Android设备应该不会陌生,因为大部分资料都是这样做的。但是假如你的Android设备没有USB口,只有网口,能不能调试呢?(比如移植过程中通过NFS启动的Android系统,再比如你的设备上面USB设备匮乏。)答案是肯定的。本文我将以我最近的经验,介绍一下adb怎样通过tcp/ip来调试Android设备。

adb早期版本只能通过USB来对设备调试,从adb v1.0.25开始,增加了对通过tcp/ip调试Android设备的功能。

sudo adb 
Android Debug Bridge version 1.0.26

 -d                            - directs command to the only connected USB device
                                 returns an error if more than one USB device is present.
 -e                            - directs command to the only running emulator.
                                 returns an error if more than one emulator is running.
 -s <serial number>            - directs command to the USB device or emulator with
                                 the given serial number. Overrides ANDROID_SERIAL
                                 environment variable.
 -p <product name or path>     - simple product name like 'sooner', or
                                 a relative/absolute path to a product
                                 out directory like 'out/target/product/sooner'.
                                 If -p is not specified, the ANDROID_PRODUCT_OUT
                                 environment variable is used, which must
                                 be an absolute path.
 devices                       - list all connected devices
 connect <host>[:<port>]       - connect to a device via TCP/IP
                                 Port 5555 is used by default if no port number is specified.
 disconnect [<host>[:<port>]]  - disconnect from a TCP/IP device.
                                 Port 5555 is used by default if no port number is specified.
                                 Using this ocmmand with no additional arguments
                                 will disconnect from all connected TCP/IP devices.


如果你想adb通过tcp/ip来调试设备,必须要满足如下条件:

1、设备上面首先要有网口。没有网口,那就是“巧妇难为无米之炊”了。

2、设备和研发机(PC机)已经接入局域网,并且设备设有局域网的IP地址。

3、要确保研发机和设备能够相互ping得通。

4、研发机已经安装了Android SDK(要确保SDK版本是2.0之后的版本)。

5、检查研发机上的adb的版本,是否是1.0.25之后的版本。方法就是在shell中敲入adb,回车,显示帮助,第一行就是adb版本信息,如上面所示。

6、确保Android设备中adbd进程(adb的后台进程)已经运行。adbd进程将会监听端口5555来进行adb连接调试。

本文假设设备的ip为192.168.1.5,下文将会用这个IP建立adb连接,并调试设备。

1、首先Android设备需要先启动,如果可以话,可以确保一下adbd启动。

2、在研发机中,输入:

adb connect 192.168.1.5:5555
如果连接成功会进行相关的提示,如果失败的话,可以先kill-server命令,然后重试连接。

adb kill-server
3、如果连接已经建立,在研发机中,可以输入adb相关的命令进行调试了。比如adb shell,将会通过tcp/ip连接设备上面。和USB调试是一样的。这里就不多说了。

4、调试完成之后,在研发机上面输入如下的命令断开连接:

adb disconnect 192.168.1.5:5555

这样就通过TCP/IP完成了对Android设备的调试工作了,希望对大家有所帮助。如有错误的地方,请不吝指教。

5.如果上面的方法仍然无法通过adb连接设备请看下面

在adb的说明文档中提到:

    “An ADB transport models a connection between the ADB server and one device
    or emulator. There are currently two kinds of transports:
       - USB transports, for physical devices through USB
       - Local transports, for emulators running on the host, connected to
         the server through TCP”

    大意是说,在物理设备上,adb是通过USB连接到设备上的,而在模拟器上,adb是通过TCP协议连接到设备上的。实际上在物理设备上,也可以让adb通过TCP协议来连接设备(当然前提条件是你的设备要有网口)。首先看一下下面这段源代码(android2.3.3),出自system/core/adb/adb.c,第938行:

   /* for the device, start the usb transport if the
        ** android usb device exists and "service.adb.tcp"
        ** is not set, otherwise start the network transport.
        */
    property_get("service.adb.tcp.port", value, "0");
    if (sscanf(value, "%d", &port) == 1 && port > 0) {
        // listen on TCP port specified by service.adb.tcp.port property
        local_init(port);
    } else if (access("/dev/android_adb", F_OK) == 0) {
        // listen on USB
        usb_init();
    } else {
        // listen on default port
        local_init(ADB_LOCAL_TRANSPORT_PORT);
    }

    分析上述代码可以发现,在adbd启动时首先检查是否设置了service.adb.tcp.port,如果设置了,就是使用TCP作为连接方式;如果没设置,就去检查是否有adb的USB设备(dev/android_adb),如果有就用USB作为连接方式;如果没有USB设备,则还是用TCP作为连接方式。

    因此只需要在启动adbd之前设置service.adb.tcp.port,就可以让adbd选则TCP模式,也就可以通过网络来连接adb了。这需要修改init.rc文件。如果不想修改,也可以在系统启动之后,在控制台上执行下列命令:

    #stop adbd

    #set service.adb.tcp.port 5555

    #start adbd

    这样就可以在主机端通过下列命令来连接设备了:

    adb connetc <ip-of-device>:5555
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Android中,可以使用adb命令通过IP地址连接手机。首先,确保手机和计算机连接在同一个网络下,并且已经打开了USB调试模式。接下来,打开命令行终端或者命令提示符窗口,在命令行中输入以下命令: 1. 首先,使用adb devices命令查看设备列表,确认设备已被识别并连接。 ``` adb devices ``` 2. 接下来,使用adb tcpip命令,将设备切换至TCP/IP模式。此时,设备将在5555端口等待连接。 ``` adb tcpip 5555 ``` 3. 然后,使用手机的IP地址替换下方命令示例中的"设备IP",输入以下命令连接设备: ``` adb connect 设备IP:5555 ``` 4. 如果连接成功,终端会返回"connected to 设备IP:5555"的信息,并且设备列表中将显示已连接的设备。 5. 现在,您可以使用adb命令与该设备进行交互,例如通过adb shell命令进入设备的shell,进行文件操作、安装应用程序等。 ``` adb shell ``` 6. 如果需要切换回USB模式,使用以下命令: ``` adb usb ``` 通过以上步骤,您可以在不使用USB线缆的情况下通过IP地址连接Android手机,并使用adb命令进行设备管理和调试操作。请注意,如果设备IP地址发生变化或重启,您可能需要重新执行步骤2和步骤3来重新连接设备。 ### 回答2: 在Android中,我们可以使用adb命令通过IP地址连接手机。首先,确保手机和电脑连接到同一个WiFi网络上。 步骤如下: 1. 打开手机的设置菜单,并找到“关于手机”选项。 2. 在“关于手机”选项中,查找和点击“状态”或“网络信息”。 3. 在“状态”或“网络信息”中,可以找到手机的IP地址。 4. 在电脑上打开命令提示符或终端窗口,输入以下adb命令:adb connect <手机IP地址>:<端口号>。例如,adb connect 192.168.0.100:5555。 5. 如果一切正常,命令提示符或终端窗口将显示“已连接到<手机IP地址>:<端口号>”。 6. 现在,您可以使用其他adb命令与连接的手机进行交互了,例如安装应用程序、传输文件等。 需要注意以下事项: 1. 手机和电脑必须连接到相同的WiFi网络上,否则无法建立连接。 2. 在一些手机上,需要在开发者选项中启用网络调试模式。 3. 如果连接不成功,可以尝试断开连接并重新连接手机,或者重新启动手机和电脑后再次尝试。 通过上述步骤,您就可以在Android中使用adb命令通过IP地址连接手机,并且可以方便地使用各种adb命令来管理和调试您的设备。 ### 回答3: 在Android中,使用adb命令通过IP地址连接手机是非常方便的。步骤如下: 首先,确保手机和电脑连接在同一个局域网环境中。 其次,在电脑上打开终端或命令提示符窗口,进入adb命令所在的目录。如果你已经将adb添加到环境变量中,可以直接在任何路径下使用adb命令。 接下来,通过以下命令查找设备IP地址:adb shell ifconfig或adb shell ip addr。在返回结果中,找到设备IP地址。 然后,使用以下命令连接到设备IP地址:adb connect 设备IP地址。例如,adb connect 192.168.0.100。 最后,在连接成功后,你可以像正常连接设备一样使用adb命令来操作手机了。例如,adb shell可以进入设备的命令行界面,adb install可以安装应用程序等。 需要注意的是,通过IP地址连接手机的方式可能不如通过USB连接稳定和快速,因此在进行开发或调试时,建议使用USB连接。此外,某些设备可能需要在设置中启用ADB网络调试模式才能通过IP地址连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值