Talks on adb - Day 2 (pdf version)
-
Upload
kangho-kim -
Category
Technology
-
view
2.467 -
download
4
description
Transcript of Talks on adb - Day 2 (pdf version)
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