3

我想通过adb网络连接到 Android 设备。我熟悉如何通过 TCP 使用 ADB 连接到 Android?并使用https://developer.android.com/guide/topics/usb/index.html并遵循指南。具体来说,我做了以下事情:

# adb kill-server
# adb tcpip 5555
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
restarting in TCP mode port: 5555
# adb connect 192.168.1.101:5555
unable to connect to 192.168.1.101:5555:5555

由于最后一个错误,我也尝试过

# adb connect 192.168.1.101
unable to connect to 192.168.1.101:5555

我也尝试重新启动设备本身,但它没有帮助。为什么它不起作用?

更新:为了消除任何疑问,我确定这是我的设备内部 IP 地址。

4

4 回答 4

0

I also met same scenario as your, TCPIP setup succeseed, but adb connet failed. I finally found it's my network problem, the ping also failed under that scenairo. After i made the ping works, the adb connect works as well. So, my suggestion is to check your network environment.

于 2013-03-19T09:33:46.107 回答
0

我的无根设备也遇到了同样的问题。与普遍的看法相反,它似乎adb tcpip <port>需要模拟器或调试版本或 root 权限;至少根据源代码。

master 分支:https ://github.com/android/platform_system_core/blob/master/adb/adb.c#L898看看should_drop_privileges哪个可以防止https://github.com/android/platform_system_core/blob/master/adb/adb。 c#L966 adb_main打开 TCP/IP 套接字连接。

在较旧的分支中,识别权限的逻辑adbd本身adb_main就是。见:https ://github.com/android/platform_system_core/blob/froyo-release/adb/adb.c#L860

因此,为了进一步证明adbd不会进入 TCP/IP 模式(即使没有adb tcpip给出错误),请查看以下内容:

adb shell getprop | grep 'ro.secure\|debuggable\|qemu',我的设备的输出:

[ro.secure]: [1]
[ro.debuggable]: [0]

这不符合能够获得secure0 in 值的条件adbd,因为我没有运行模拟器(默认情况下需要 TCP/IP),我没有运行 Android 的可调试版本,而且我正在不是根。

此外,如果您发出adb shell netstat命令,您将看到没有人在侦听端口 5037 或 5555 或您在 TCP/IP 模式下运行时提供给tcpip命令的任何其他内容。adbd

希望这有帮助,祝你好运!

于 2012-10-22T09:22:33.743 回答
0

使用 tcpip 传输重新启动 adbd 的能力因设备而异。如果不确切知道您正在使用哪种设备,就很难知道确切的原因。

我在运行 4.2.1 的 Galaxy Nexus (takju) 上测试了“adb tcpip 5555”,发现它可以工作。我还在其他几个设备上进行了测试,但这些都不起作用。

我设法在 Motorola Droid 3 上使用 root 访问权限使其工作。请注意 ro.secure=1 和 ro.debuggable=0 仍然。我只需手动将 service.adb.tcp.port 设置为“5555”,如下所示:

    devbox:~/droid3$ adb shell
    shell@cdma_solana:/$ getprop | grep 'ro.secure\|可调试\|qemu'
    [ro.secure]:[1]
    [ro.debuggable]:[0]
    shell@cdma_solana:/$ su -c 'setprop service.adb.tcp.port 5555'
    shell@cdma_solana:/$ 退出
    devbox:~/droid3$ adb tcpip 5555
    在 TCP 模式下重启端口:5555
    devbox:~/droid3$ adb connect 172.16.0.14
    连接到 172.16.0.14:5555
    devbox:~/droid3$ adb -s 172.16.0.14:5555 外壳
    壳@cdma_solana:/$

虽然我在运行“adb tcpip”时指定了 5555,但它会被设备忽略。似乎这个特定设备没有必要的访问权限来设置没有 root 的“service.adb.tcp.port”属性。

同样,您可以像这样返回 USB:

    shell@cdma_solana:/$ getprop | grep 亚行
    [persist.service.adb.enable]:[1]
    [ro.sys.atvc_allow_all_adb]:[0]
    [persist.adb.tcp.port]:[]
    [init.svc.adbd]:[运行中]
    [service.adb.tcp.port]:[5555]
    shell@cdma_solana:/$ su -c 'setprop service.adb.tcp.port ""'
    shell@cdma_solana:/$ 退出
    devbox:~/droid3$ adb -s 172.16.0.14:5555 usb
    以 USB 模式重新启动
    devbox:~/droid3$ adb shell
    壳@cdma_solana:/$

这可能不适用于其他设备的原因各不相同。

在我测试的 Galaxy Nexus 上,shell 用户能够设置“service.adb.tcp.port”属性。目前尚不清楚为什么会有所不同。

有趣的是,如果启用 TCPIP,droid3 似乎不会继续在 USB 上监听。但是,Galaxy Nexus 会。

希望这可以帮助..

PS。另请参阅:如何通过 TCP 使用 ADB 连接到 Android?

于 2013-01-13T19:54:02.343 回答
0

嗨,我知道这是一个老问题,但我遇到了同样的问题。我不确定你的情况是否相同,但对我来说,问题是我通过 USB 扩展连接我的 Android 设备,只要我将 Android 设备直接连接到我的 MAC 中的 USB 端口,它就可以工作了。

只是为了澄清尝试将Android设备直接连接到计算机或尝试切换USB端口。

于 2015-06-16T01:47:42.253 回答