2012-06-17 159 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端口。