2012-06-17 138 views
3

我想通过网络连接到使用adb的Android设备。我熟悉How can I connect to Android with ADB over TCP?https://developer.android.com/guide/topics/usb/index.html并遵循指导原则。具体地说,我做了以下:Android - adb tcpip错误

# 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地址。

+0

那是设备的IP地址? – L7ColWinters

+0

@ L7ColWinters的确如此。 – MrRoth

+0

你解决了吗?什么是您的设备型号? – clemp6r

回答

0

我一直有与我的无根设备相同的问题。与流行的看法相反,adb tcpip <port>似乎需要模拟器或调试版本或root权限;至少根据源代码。

主分支:https://github.com/android/platform_system_core/blob/master/adb/adb.c#L898should_drop_privileges它可以防止https://github.com/android/platform_system_core/blob/master/adb/adb.c#L966adb_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] 

这不符合能在adbd得到0 secure值,因为我没有运行一个仿真器(默认情况下需要TCP/IP)的条件,我没有运行调试的构建的Android,我不是根。

此外,如果你发出命令adb shell netstat你会看到,有没有人侦听端口5037或5555或您提供给tcpip命令其他任何来自于TCP/IP模式下运行的adbd预期。

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

0

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

我在运行4.2.1的Galaxy Nexus(takju)上测试过“adb tcpip 5555”,发现它工作正常。我还在其他一些设备上进行了测试,但那些设备无法正常工作。

我设法让它在摩托罗拉Droid 3上使用root权限进行工作。请注意,ro.secure = 1且ro.debuggable = 0仍然存在。我简单地通过手动设置service.adb.tcp.port”到‘5555:亚洲开发银行TCPIP‘它被器件忽略’这样我虽然运行时指定5555

 
    devbox:~/droid3$ adb shell 
    [email protected]_solana:/$ getprop | grep 'ro.secure\|debuggable\|qemu' 
    [ro.secure]: [1] 
    [ro.debuggable]: [0] 
    [email protected]_solana:/$ su -c 'setprop service.adb.tcp.port 5555' 
    [email protected]_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 
    [email protected]_solana:/$ 

’看来,这个特殊的设备没有必要的权限来设置没有根目录的“service.adb.tcp.port”属性。

同样,你可以回去USB这样:

 
    [email protected]_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] 
    [email protected]_solana:/$ su -c 'setprop service.adb.tcp.port ""' 
    [email protected]_solana:/$ exit 
    devbox:~/droid3$ adb -s 172.16.0.14:5555 usb 
    restarting in USB mode 
    devbox:~/droid3$ adb shell 
    [email protected]_solana:/$ 

的原因,这可能无法正常工作在其他设备上有所不同。

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

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

希望这会有所帮助..

PS。另请参阅:How can I connect to Android with ADB over TCP?

0

我也遇到了同样的情况,您的TCPIP设置成功,但adb连接失败。我终于发现这是我的网络问题,ping也在这个scenairo下失败。 我做了ping工程之后,adb connect也起作用了。所以,我的建议是检查你的网络环境。

0

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

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