Android - adb tcpip错误

x6yk4ghg  于 2023-06-04  发布在  Android
关注(0)|答案(4)|浏览(239)

我想通过网络使用adb连接到Android设备。我熟悉How can I connect to Android with ADB over TCP?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地址。

ev7lccsx

ev7lccsx1#

我的无根设备也遇到了同样的问题。与流行的看法相反,adb tcpip <port>似乎需要模拟器、调试版本或root权限;至少根据源代码。
主分支:https://github.com/android/platform_system_core/blob/master/adb/adb.c#L898查看阻止https://github.com/android/platform_system_core/blob/master/adb/adb.c#L966 adb_main打开TCP/IP套接字连接的should_drop_privileges
在较早的分支中,用于标识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]

这不符合在adbd中能够获得secure值0的条件,因为我没有运行模拟器(默认情况下需要TCP/IP),我没有运行Android的可调试版本,而且我不是root。
此外,如果您发出adb shell netstat命令,您将看到没有人侦听端口5037或5555或您提供给tcpip命令的任何其他端口,这与运行在TCP/IP模式下的adbd的预期一致。
希望这有帮助,祝你好运!

6rqinv9w

6rqinv9w2#

使用tcpip传输重新启动adbd的能力因设备而异。如果不知道你使用的是哪种设备,就很难知道确切的原因。
我在一台运行4. 2. 1的Galaxy Nexus(Takju)上测试了“adb tcpip 5555”,发现它能正常工作。我还在其他几个设备上进行了测试,这些设备都不起作用。
我设法让它工作使用根访问摩托罗拉Droid 3。请注意,www.example.com = 1,ro.debuggable = 0。ro.secure=1 and ro.debuggable=0 still. I simply by manually set service.adb.tcp.port" to "5555" as such:

devbox:~/droid3$ adb shell
    shell@cdma_solana:/$ getprop | grep 'ro.secure\|debuggable\|qemu'
    [ro.secure]: [1]
    [ro.debuggable]: [0]
    shell@cdma_solana:/$ su -c 'setprop service.adb.tcp.port 5555'
    shell@cdma_solana:/$ exit
    devbox:~/droid3$ adb tcpip 5555
    restarting in TCP mode port: 5555
    devbox:~/droid3$ adb connect 172.16.0.14
    connected to 172.16.0.14:5555
    devbox:~/droid3$ adb -s 172.16.0.14:5555 shell
    shell@cdma_solana:/$

虽然我在运行“adb tcpip”时指定了5555,但它会被设备忽略。看起来这个特殊的设备没有所需的访问权限来设置没有root的“service.adb.tcp.port”属性。
类似地,您可以返回到USB,如下所示:

shell@cdma_solana:/$ getprop | grep adb
    [persist.service.adb.enable]: [1]
    [ro.sys.atvc_allow_all_adb]: [0]
    [persist.adb.tcp.port]: []
    [init.svc.adbd]: [running]
    [service.adb.tcp.port]: [5555]
    shell@cdma_solana:/$ su -c 'setprop service.adb.tcp.port ""'
    shell@cdma_solana:/$ exit
    devbox:~/droid3$ adb -s 172.16.0.14:5555 usb
    restarting in USB mode
    devbox:~/droid3$ adb shell
    shell@cdma_solana:/$

这在其他设备上可能不起作用的原因各不相同。
在我测试的GalaxyNexus上,shell用户能够设置"service.adb.tcp.port"属性。目前还不清楚为什么这一点在这个时候有所不同。
有趣的是,如果你启用TCPIP,droid3似乎不会继续监听USB。不过,Galaxy Nexus会。
希望这对你有帮助。
PS.另见:How can I connect to Android with ADB over TCP?

a0zr77ik

a0zr77ik3#

我也遇到了和你一样的情况,TCPIP设置成功,但adb连接失败。我终于发现是我的网络问题,在那个场景下ping也失败了。在我做了ping工程后,adb连接工程以及。因此,我的建议是检查您的网络环境。

5ktev3wc

5ktev3wc4#

你好,我知道这是一个老问题,但我也有同样的问题。我不确定这是相同的情况下,你,但对我来说,问题是,我是通过USB扩展连接我的Android设备,只要我连接Android设备直接到USB端口在我的MAC它的工作.
只是为了澄清尝试将Android设备直接连接到计算机或尝试切换USB端口.

相关问题