talks on adb - day 2 (pdf version)
DESCRIPTION
adb, debuggingTRANSCRIPT
DebuggerDebugger
Java DebuggingJava DebuggingJava DebuggingJava Debugging
Android Android
Debugging ToolsDebugging Tools
adb (Day 2)adb (Day 2)
adb Architectureadb Architecture
Development Machine Target Machine
Client
adb.exeADT plugin
DDMS
Device/Emulator
emulator.exeadbd (daemon)
on 5554 (console)
on 5555 (adb)
Dev.Host
Server
adb.exe
on 5555 (adb)
on 5037 USB
adb Commandsadb Commands
OptionsOptions--dd--ee--s <serialNumber>s <serialNumber>
Ports and NetworkingPorts and Networkingforward <local> <remote>forward <local> <remote>
ScriptingScripting--s <serialNumber>s <serialNumber>
GeneralGeneraldevicesdevices
DebugDebuglogcatlogcatjdwpjdwp
DataData
ScriptingScriptingwaitwait--forfor--devicedevice
ServerServerstartstart--serverserverkillkill--serverserver
ShellShellshellshell
DataDatainstallinstallpushpushpullpull
adb Commands adb Commands 사용사용 시나리오시나리오
adb shelladb shell
#ls /data/app#ls /data/app(DDMS File Explorer)(DDMS File Explorer)
adb pull adb pull
Extract .apkExtract .apk
adb devicesadb devices
Server (ADB_HOST mode)Server (ADB_HOST mode)>adb fork>adb fork--server serverserver server1. adb_commandline()1. adb_commandline()2. adb_main()2. adb_main()
ClientClient>adb devices>adb devices1. adb_commandline()1. adb_commandline()2. adb_query(“host:devices”)2. adb_query(“host:devices”)2. adb_main()2. adb_main()
fdevent like UDS pairsfdevent like UDS pairsusb_init()usb_init()local client initlocal client initclient socket thread start to 5555, 5557, ...client socket thread start to 5555, 5557, ...install_listener()install_listener()
socket_loopback_serversocket_loopback_server on 5037on 5037fdevent_loop()fdevent_loop()
2. adb_query(“host:devices”)2. adb_query(“host:devices”)_adb_connect(_adb_connect(““host:versionhost:version””))_adb_connect(_adb_connect(““host:host:devices”devices”))
connect to 5037connect to 5037write length & service stringwrite length & service string
read response coderead response coderead length & response stringread length & response string
이미지를 표시할 수 없습니다 . 컴퓨터 메모리가 부족하여 이미지를 열수 없거나 이미지가 손상되었습니다 . 컴퓨터를 다시시작한 후 파일을 다시 여십시오 . 여전히 빨간색 x가 나타나면 이미지를 삭제한 다음 다시 삽입해야 합니다 .
3
3. 3. handle_host_requesthandle_host_request()()list_transportslist_transports()()write to reply_fdwrite to reply_fd
adb shell lsadb shell ls
Server (ADB_HOST mode)Server (ADB_HOST mode)>adb fork>adb fork--server serverserver server1. adb_commandline()1. adb_commandline()2. adb_main()2. adb_main()
ClientClient>adb shell ls>adb shell ls1. adb_commandline()1. adb_commandline()2. adb_connect(“shell:ls”)2. adb_connect(“shell:ls”)2. adb_main()2. adb_main()
fdevent like UDS pairsfdevent like UDS pairsusb_init()usb_init()local client initlocal client initclient socket thread start to 5555, 5557, ...client socket thread start to 5555, 5557, ...install_listener()install_listener()
socket_loopback_serversocket_loopback_server on 5037on 5037fdevent_loop()fdevent_loop()
2. adb_connect(“shell:ls”)2. adb_connect(“shell:ls”)connect to 5037connect to 5037write transport_typewrite transport_type
write length & service stringwrite length & service string
이미지를 표시할 수 없습니다 . 컴퓨터 메모리가 부족하여 이미지를 열수 없거나 이미지가 손상되었습니다 . 컴퓨터를 다시시작한 후 파일을 다시 여십시오 . 여전히 빨간색 x가 나타나면 이미지를 삭제한 다음 다시 삽입해야 합니다 .
3
3. 3. handle_host_requesthandle_host_request()()acquire_one_transportacquire_one_transport()()asocketasocket-->transport is changed>transport is changed
Interaction with EmulatorInteraction with Emulator
Console on 5554Console on 5554>telnet localhost 5554>telnet localhost 55541. Commands1. Commands
eventevent
adb on 5555adb on 55551. redirect host port(5555 or 5557 1. redirect host port(5555 or 5557
or ...) to guest(10.0.2.15:5555)or ...) to guest(10.0.2.15:5555)slirp_redir()slirp_redir()
eventeventgeo, gsm, smsgeo, gsm, smsnetwork, powernetwork, power
goldfish_device_set_irqgoldfish_device_set_irq
......
2. Play!2. Play!smssms send 01011111111 Hello!send 01011111111 Hello!
slirp_redir()slirp_redir()2. ping to adb server2. ping to adb serveremulator: sent '0012host:emulator:5555' emulator: sent '0012host:emulator:5555'
to ADB serverto ADB server2. adb_connect(“shell:ls”)2. adb_connect(“shell:ls”)
connect to 5037connect to 5037write transport_typewrite transport_type
write length & service stringwrite length & service string
smssms send 01011111111 Hello!send 01011111111 Hello!gsm call 01011111111gsm call 01011111111gsm accept 01011111111gsm accept 01011111111