adb
adb ๊ด๋ จ
๊ตฌ์ฑ
- client: development machine์์ ๋์. shell์์ client๋ฅผ invocationํด์ command ์คํ ๊ฐ๋ฅ. ADT, DDMS๋ client
- server: development machine์ background process์ด๋ฉฐ, client์ daemon ์ฌ์ด์์์ communication์ ๊ด๋ฆฌ
- daemon: ๊ฐ๊ฐ์ device์์ ๋์ํ๋ background process
client๋ฅผ ์์ํ๋ฉด, ADB server๊ฐ ์คํ์ค์ธ์ง ํ์ธํด์ ์คํ์ค์ด์ง ์์ผ๋ฉด server๋ฅผ ์์์ํจ๋ค. server๊ฐ ์์๋๋ฉด TCP์ 5037 port๋ก bindingํด์ adb client๋ก๋ถํฐ์ command๋ฅผ ๋ฐ์๋ค์ด๋๋ฐ, ๋ชจ๋ client๋ server์ communication ํ๊ธฐ ์ํด 5037 port๋ฅผ ์ฌ์ฉ.
์คํํ์ผ :
${android_sdk_path}/tools/adb
Command ์ ๋ ฅ ํ์
adb [-d | -e | -s <serialNumber>] <command>
adb devices
adb server์ ์ฐ๊ฒฐ๋ device๋ฅผ ๋ณด์ฌ์ค๋ค.
ํ์ : [serialNumber] [state]
serialNumber
= type-consolePort (ex : emulator-5554)state
- offline (device๊ฐ adb์ ์์ง ์ฐ๊ฒฐ๋์ง ์์๊ฑฐ๋ ์๋ต์ด ์๋ ์ํ)
- device (adb server์ ์ฐ๊ฒฐ๋ ์ํ)
-s
option
์ฌ๋ฌ๊ฐ์ device๊ฐ ์ฐ๊ฒฐ๋์ด ์๋ ์ํ์์ ํน์ device์ command๋ฅผ ์ ๋ ฅํ๊ณ ์ถ์ ๋ ์ฌ์ฉ
ํ์
adb -s <serialNumber> <command>
# ex : adb -s emulator-5554 install sample.apk
Port forwarding
device์ port๋ฅผ forwarding ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น
ex : port 6100์์ 7100์ผ๋ก forwarding ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
adb forward tcp:6100 tcp:7100
Script(s)
์ข ํฉ ๋ฆฌํฌํธ
adb dumpsys <service> # app/service ์ํ์ ๋ณด ๋คํ, ์๋น์ค๋ณ๋ก ์ถ๊ฐ ํ๋ผ๋ฏธํฐ ๋ฐ์ ์ ์์
adb dumpstate <...> # device ์ํ์ ๋ณด ๋คํ. ์ํ์ ๋ณด๋ฅผ ์ถ์ถํ๋ ์ฌ๋ฌ ๋ช
๋ น์ด๋ค์ ์กฐํฉ์ผ๋ก ๊ตฌ์ฑ
adb dumpcrash <...> # ์ ํ๋ฆฌ์ผ์ด์
์ด crach๋ ๋์ ์ํ์ ๋ณด ๋คํ
adb bugreport <์ถ๋ ฅํ ๊ฒฝ๋ก> # logcat + dumpsys + dumpstat
๋ก๊ทธ
adb logcat # ๋ก๊ทธ์บฃ ๋ณด๊ธฐ
adb shell
#
# ์ฑ (๊ฐ์ ๋ก) ์ฃฝ์ด๊ธฐ
#
adb shell am force-stop <PACKAGE_NAME>
#
# ๋จ๋ง๊ธฐ์ ์ค์น ๋ ์ฑ apkํ์ผ ์ถ์ถ
#
adb shell pm path kr.go.mobile.testbed.iff
# package:/data/app/kr.go.mobile.testbed.iff-OOdwhCmgyXRvbOh3PjJdUw==/base.apk
adb pull /data/app/kr.go.mobile.testbed.iff-yxAQZiMbPotN8fOSLIJR2Q==/base.apk path/to/desired/destination
#
# ํ์ฌ Activity PID์ฐพ๊ธฐ
#
adb shell "dumpsys activity | grep top-activity"
#
# ์์คํ
๊ธฐ๋ณธ์ ๋ณด: ํ๋์จ์ด, ์ปค๋ ๋ฑ
#
adb shell cat /proc/version # ์ปค๋ ๋ฒ์
adb shell cat /proc/cpuinfo # ํ๋ก์ธ์ ์ ๋ณด, CPUํ์
, ๋ชจ๋ธ ์ ์กฐ์ฌ ๋ฑ
adb shell cat /porc/meminfo # ๋ฉ๋ชจ๋ฆฌ ์ ๋ณด, ์ค์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ
adb shell cat /proc/devices # ํ์ฌ ์ปค๋์ ์ค์ ๋์ด ์๋ ์ฅ์น ๋ชฉ๋ก
adb shell mount # ๋ง์ดํธ๋ ๋ชจ๋ ์ฅ์น ์ ๋ณด
adb shell df # ํ๋๋์คํฌ ์ฌ์ฉ๋
adb shell cat /porc/filesystems # ์ปค๋์ ์ค์ ๋์ด ์๋ ํ์ผ์์คํ
๋ชฉ๋ก
adb shell cat /proc/swaps # ์ค์ ํํฐ์
์ ํฌ๊ธฐ์ ์ฌ์ฉ๋
adb shell cat /proc/interrupts # ์ฅ์น๊ฐ ์ฌ์ฉ์ค์ธ ์ธํฐ๋ฝํธ(IRQ)๋ชฉ๋ก ํ์
adb shell cat /proc/ioports # ํ์ฌ ์ฌ์ฉ์ค์ธ input/output ํฌํธ
adb shell cat /proc/partitions # ํํฐ์
์ ๋ณด
adb shell cat /proc/uptime # ์์คํ
์ด ์ผ๋ง๋ ์ด์์์๋์ง
adb shell cat /proc/stat # ์์คํ
์ํ์ ๊ดํ ๋ค์ํ ์ ๋ณด, CPU ์ฌ์ฉ ํต๊ณ, ๋ถํ
์ดํ page fault ๋ฐ์ ํ์ ๋ฑ
adb shell cat /proc/zoneinfo # ZONEINFO
adb shell dmesg # ์์คํ
๋ถํ
์ ๋์๋ ๋ฉ์์ง
adb shell ps # ์คํ์ค์ธ ํ๋ก์ธ์ค ์ ๋ณด
adb shell ps -p -t # ํ๋ก์ธ์ค์ ์ฐ๋ ๋ ๋ชฉ๋ก
adb shell set # ํ๊ฒฝ์ค์ ๊ฐ ์ถ๋ ฅ 1
adb shell printenv # ํ๊ฒฝ์ค์ ๊ฐ ์ถ๋ ฅ 2
#
# ์์คํ
๋ฆฌ์์ค ์ฌ์ฉ ํํฉ
#
adb shell vmstat # ์์คํ
๋ฆฌ์์ค ์ํฉ ๋ชจ๋ํฐ, CPU, I/O, Memory ๋ฑ
adb shell cat /proc/diskstats # ๋์คํฌ utilization๊ณผ throughput. ์ฆ ๋์คํฌ I/Oํํฉ
adb shell top # ์์คํ
ํ๋ก์ธ์ค ์ํฉ ๋ชจ๋ํฐ๋ง/ ํ๋ก์ธ์ค๋ณ CPU์ฌ์ฉ๋, ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ์ฌ์ฉ๋ ๋ฑ
adb shell procrank # ํ๋ก์ธ์ค๋ณ ๋ฉ๋ชจ๋ฆฌ
adb shell dumpsys meminfo <PID> # ํด๋น ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ ์์ธ ์ ๋ณด
adb shell cat /proc/<PID>/stat # ํด๋น ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด, ์์์๊ฐ, ์ํ, CPU ์ฌ์ฉ๋ ๋ฑ
adb shell cat /proc/<PID>/maps # ํด๋น ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ๋งต ์ ๋ณด
adb shell cat /proc/vmstat # ๋ฒ์ถ์ผ ๋ฉ๋ชจ๋ฆฌ ํต๊ณ?
adb shell librank # ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ณ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋?
#
# ๋คํธ์ํฌ ๊ด๋ จ
#
adb shell cat /proc/net/netlink # ๋คํธ์ํฌ ์ ๋ณด
adb shell netcfg # ๋คํธ์ํฌ ์ธํฐํ์ด์ค์ IP์ฃผ์ ๋ชฉ๋ก
adb shell netstat # ๋คํธ์ํฌ ์ฐ๊ฒฐ์ํ ํ์ธ
adb shell nc # ๋คํธ์ํฌ์ฉ cat ๋ช
๋ น์ด(netcat)
adb shell ifconfig # ๋คํธ์ํฌ ์ธํฐํ์ด์ค ์ค์ ์ ๋ณด. ์ฅ์น๋ช
์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์. ip ์ฃผ์. ์๋ธ๋ท๋ง์คํฌ ๋ฑ
adb shell tcpdump # ์ค์๊ฐ ํจํท ๋ชจ๋ํฐ๋ง
adb shell iftop # ๋คํธ์ํฌ๋ฅผ ์ํ top
adb shell route # ํด๋น ํธ์คํธ๊น์ง ์ฐ๊ฒฐํ๋ ์ค๊ฐ ๊ฒฝ๋ก ์ ๋ณด์ธ ๋ผ์ฐํ
ํ
์ด๋ธ ํ์
adb shell ping # ์๊ฒฉ ํธ์คํธ์์ ์ฐ๊ฒฐ ํ
์คํธ
adb shell cat /proc/net/route # Route
#
# ์๋๋ก์ด๋ ์ ๊ณต
#
adb shell pm <...> # package manager์ ์ฝ์. ํจํค์ง/permission/instrumentation/feature ๋ชฉ๋ก, ํจํค์ง ์ค์น/์ ๊ฑฐ ๋ฑ
adb shell am <...> # activity manager์ ์ฝ์, ์กํฐ๋นํฐ ์์, Intent ๋ธ๋ก๋์บ์คํ
, Instrumentation ์์, profiling ์์ / ์ค์ง ๋ฑ
adb shell service <...> # ์๋๋ก์ด๋ ์๋น์ค ๋ชฉ๋ก ํ์, ์๋น์ค์ ๋ช
๋ น ์ ๋ฌ
adb shell monkey <...> # ์ ํ๋ฆฌ์ผ์ด์
์ ๋๋ค ์ด๋ฒคํธ ๋ฐ์์ํด. ์ฌ์ฉ์ ์ด๋ฒคํธ, ์์คํ
์ด๋ฒคํธ์ ๋ฌด์์ ๋ฐํ
adb shell cat /data/anr/traces.txt # VM TRACES (์ฐ๋ ๋ ๋คํ)
adb shell cat /proc/binder/proc/<PID> # ๋ฐ์ธ๋ ํ๋ก์ธ์ค ์ํ
adb shell cat /proc/binder/xxx : ๋ฐ์ธ๋ ๊ด๋ จ ์ ๋ณด(xxx์ transaction, transaction_log, failed_transaction_log, stats ๋ฑ)
adb shell cat /data/system/packages.xml : ์ค์น๋ ํจํค์ง ์ธํ
์ ๋ณด
adb shell setprop # system property ์
ํ
adb shell getprop # ์
ํ
๋ system property ๋ชฉ๋ก ์ถ๋ ฅ
App ๋ด๋ถ์ ์ฅ์ ์ ๊ทผ / ํ์ธ
adb shell cd /data/data/[packageNm] # ๊ฒฝ๋ก ์ด๋
Copying files
pull
device์์ file์ copyํด ์ฌ ๋ ์ฌ์ฉ (recursively)
adb pull <remote> <local>
push
pull๊ณผ ๋ฐ๋๋ก file์ device์ ๋ณต์ฌํด ๋ฃ๊ณ ์ถ์ ๋ ์ฌ์ฉ (recursively)
adb push <local> <remote>
adb push foo.txt /sdcard/foo.txt) (/sdcard/foo.txt ์์ /sdcard๋ device์ ์กด์ฌํ๋ path
adb push 300์ ์ง๊ท001_env.cer /sdcard/GPKI/certificate/class2/300์ ์ง๊ท001_env.cer
adb push 300์ ์ง๊ท001_env.key /sdcard/GPKI/certificate/class2/300์ ์ง๊ท001_env.key
adb push 300์ ์ง๊ท001_sig.cer /sdcard/GPKI/certificate/class2/300์ ์ง๊ท001_sig.cer
adb push 300์ ์ง๊ท001_sig.key /sdcard/GPKI/certificate/class2/300์ ์ง๊ท001_sig.key