2015-01-26 2 views
1

Я пытаюсь использовать ADB через прямое соединение, т.е. через порт 5037 с телнет, основные команды, такие как «хост: устройства» возвращать тот же ответ, чем эквивалентные ADB команды:ADB прямые команды оболочки не работает на телнет

C:\adb>adb devices 
List of devices attached 
4d009c06c8459000  device 

C:\adb>telnet localhost 5037 
Connecting to localhost... 
Sent: 000Chost:devices 
Received: OKAY00184d009c06c8459000 device 

Но когда я пытаюсь команду "устройства", как "оболочка" Я получаю сообщение об ошибке:

C:\adb>adb shell ls 
acct 
cache 
charger 
config 
... 
... 

C:\adb>telnet localhost 5037 
Connecting to localhost... 
Sent: 0008shell:ls 
Received: FAIL0012device offline (x) 

что не так?

ответ

1

Ваше понимание того, как работает протокол adb, неверен. Либо прочитать спецификации или просто посмотреть, что обмен действительно происходит, когда вы запускаете любые adb shell команд:

C:\>set ADB_TRACE=1 

C:\>adb shell date 
system/core/adb/adb.c::main():Handling commandline() 
system/core/adb/commandline.c::adb_commandline():interactive shell loop. buff=shell:date 
system/core/adb/adb_client.c::_adb_connect():_adb_connect: host:version 
system/core/adb/sysdeps_win32.c::socket_loopback_client():socket_loopback_client: port 5037 type tcp => fd 100 
system/core/adb/transport.c::writex():writex: fd=100 len=4: 30303063 000c 
system/core/adb/transport.c::writex():writex: fd=100 len=12: 686f73743a76657273696f6e host:version 
system/core/adb/transport.c::readx():readx: fd=100 wanted=4 
system/core/adb/transport.c::readx():readx: fd=100 wanted=4 got=4 
4f4b4159 OKAY 
system/core/adb/adb_client.c::_adb_connect():_adb_connect: return fd 100 
system/core/adb/adb_client.c::adb_connect():adb_connect: service shell:date 
system/core/adb/transport.c::readx():readx: fd=100 wanted=4 
system/core/adb/transport.c::readx():readx: fd=100 wanted=4 got=4 
30303034 0004 
system/core/adb/transport.c::readx():readx: fd=100 wanted=4 
system/core/adb/transport.c::readx():readx: fd=100 wanted=4 got=4 
30303230 0020 
system/core/adb/sysdeps_win32.c::adb_close():adb_close: 100(lo-client:5037) 
system/core/adb/adb_client.c::_adb_connect():_adb_connect: shell:date 
system/core/adb/sysdeps_win32.c::socket_loopback_client():socket_loopback_client: port 5037 type tcp => fd 101 
system/core/adb/transport.c::writex():writex: fd=101 len=4: 30303132 0012 
system/core/adb/transport.c::writex():writex: fd=101 len=18: 686f73743a7472616e73706f72742d61 host:transport-a 
system/core/adb/adb_client.c::switch_socket_transport():Switch transport in progress 
system/core/adb/transport.c::readx():readx: fd=101 wanted=4 
system/core/adb/transport.c::readx():readx: fd=101 wanted=4 got=4 
4f4b4159 OKAY 
system/core/adb/adb_client.c::switch_socket_transport():Switch transport success 
system/core/adb/transport.c::writex():writex: fd=101 len=4: 30303061 000a 
system/core/adb/transport.c::writex():writex: fd=101 len=10: 7368656c6c3a64617465 shell:date 
system/core/adb/transport.c::readx():readx: fd=101 wanted=4 
system/core/adb/transport.c::readx():readx: fd=101 wanted=4 got=4 
4f4b4159 OKAY 
system/core/adb/adb_client.c::_adb_connect():_adb_connect: return fd 101 
system/core/adb/adb_client.c::adb_connect():adb_connect: return fd 101 
system/core/adb/commandline.c::adb_commandline():about to read_and_dump(fd=101) 
system/core/adb/commandline.c::read_and_dump():read_and_dump(): pre adb_read(fd=101) 
system/core/adb/commandline.c::read_and_dump():read_and_dump(): post adb_read(fd=101): len=30 
Thu Mar 26 06:51:49 GMT 1970 
system/core/adb/commandline.c::read_and_dump():read_and_dump(): pre adb_read(fd=101) 
system/core/adb/commandline.c::read_and_dump():read_and_dump(): post adb_read(fd=101): len=0 
system/core/adb/commandline.c::adb_commandline():read_and_dump() done. 
system/core/adb/sysdeps_win32.c::adb_close():adb_close: 101(lo-client:5037) 
system/core/adb/commandline.c::adb_commandline():interactive shell loop. return r=0 
+0

Вы были совершенно правы, я не совсем понимаю ADB функциональности, я пропускал транспорт часть, спасибо за ваш ответ. –

Смежные вопросы