通过网络使用adb

本文详细介绍了如何通过设置service.adb.tcp.port属性使ADB选择TCP连接方式而非默认的USB连接方式。通过修改init.rc文件或在系统启动后执行特定命令,可以在物理设备上启用TCP连接,实现远程调试。

    在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协议来连接设备(当然前提条件是你的设备要有网口)。首先看一下下面这段源代码,出自system/core/adb/adb.c,第921行:

 

   /* 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

 

 

通过网络使用 ADBADB over Network)是一种在无需物理连接的情况下调试 Android 设备的方式,特别适用于数据线接口损坏或希望减少线缆干扰的场景。以下是实现 ADB over Network 的完整步骤和注意事项: ### 1. 确保设备和主机在同一局域网内 在开始之前,确保 Android 设备与运行 ADB 的主机处于同一个 Wi-Fi 或局域网中。这是网络连接的前提条件。 ### 2. 初始 USB 连接并启用 ADB over Network 首先通过 USB 将设备连接到主机,然后打开终端或命令行工具,执行以下命令: ```bash adb root ``` 该命令将 ADB 服务以 root 权限运行,确保后续操作不会因权限问题失败。 接着设置 ADB 使用TCP 端口(默认为 5555),并重启 ADBTCP/IP 模式: ```bash adb shell setprop persist.adb.tcp.port 5555 adb tcpip 5555 ``` 此时设备已切换到网络模式,可以通过 IP 地址进行连接。 ### 3. 获取设备 IP 地址并连接 在 Android 设备上获取其当前的 IP 地址,通常可以在“设置” > “关于手机” > “状态信息”中找到。假设设备的 IP 为 `192.168.1.100`,则在终端中执行: ```bash adb connect 192.168.1.100:5555 ``` 如果连接成功,终端会显示 `connected to 192.168.1.100:5555`,表示设备已通过网络连接。 ### 4. 验证连接状态 可以使用以下命令查看当前连接的设备: ```bash adb devices ``` 如果设备出现在列表中,则表示网络连接已成功建立。 ### 5. 安全性与限制 - **默认端口为 5555**,更改端口并不能显著提升安全性,因为 ADB 本身在网络环境下缺乏加密机制[^4]。 - **安全网络环境**:确保在受控的物理和网络环境中使用 ADB over Network,避免在公共或不受信任的网络中启用此功能。 - **企业 Wi-Fi 限制**:某些企业级 Wi-Fi 网络可能阻止点对点通信,导致无法连接。此时建议使用非公司网络或通过网线连接[^3]。 ### 6. 断开与重新连接 如果设备断开连接,可以再次执行 `adb connect` 命令重新连接。若需恢复 USB 模式,可使用以下命令: ```bash adb usb ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值