ADB(Android Debug Bridge)에 대한 사용법을 다룬다.
안드로이드 개발을 하면 adb 프로그램을 빼놓을 수 없다. 안드로이드 SDK 에 adb 가 들어있고 path 를 잘 잡아놨다면 adb 실행이 가능하다.
디바이스에 파일을 넣거나 꺼내는 기능, 디바이스 쉘로 들어갈 수 있는 기능, 애플리케이션을 설치 또는 삭제할 수 있는 기능, 로그 메시지를 볼 수 있는 기능을 주고 사용하고 그 외에도 많은 기능들이 들어있다.
전통적인 임베디드 리눅스라면 시리얼 포트로 이러한 역할을 수행했겠지만, 안드로이드에서는 USB 포트를 써서 adb 로 디버깅 및 애플리케이션 인스톨, 파일 전송들을 구현하였다.
설치하는 방법에는 2가지가 있다.
첫번째 방법은 다른 문서를 참고한다.
두번째 방법은 다른 문서를 참고한다.
우분투의 경우, 다음과 같이 설치할 수 있다.
#apt-get install adb
adb 를 실행하면, 아래와 같이 많은 옵션을 지원하는 것을 알 수 있다.
root@ubuntu:~# adb Android Debug Bridge version 1.0.31 -a - directs adb to listen on all interfaces for a connection -d - directs command to the only connected USB device returns an error if more than one USB device is present. -e - directs command to the only running emulator. returns an error if more than one emulator is running. -s <specific device> - directs command to the device or emulator with the given 다 serial number or qualifier. Overrides ANDROID_SERIAL environment variable. // 디바이스가 여러 개 연결되어 있을 경우 serial number 로 선택할 수 있다 -p <product name or path> - simple product name like 'sooner', or a relative/absolute path to a product out directory like 'out/target/product/sooner'. If -p is not specified, the ANDROID_PRODUCT_OUT environment variable is used, which must be an absolute path. -H - Name of adb server host (default: localhost) -P - Port of adb server (default: 5037) devices [-l] - list all connected devices // 연결된 디바이스들의 목록과 시리얼을 볼 수 있다 ('-l' will also list device qualifiers) connect <host>[:<port>] - connect to a device via TCP/IP // 디바이스에 TCP/IP 로 연결할 수 있다 Port 5555 is used by default if no port number is specified. // 포트번호 5555 는 default 설정이다 disconnect [<host>[:<port>]] - disconnect from a TCP/IP device. Port 5555 is used by default if no port number is specified. Using this command with no additional arguments will disconnect from all connected TCP/IP devices. device commands: adb push <local> <remote> - copy file/dir to device // 디바이스에 파일을 넣을 수 있다 adb pull <remote> [<local>] - copy file/dir from device // 디바이스에 파일을 꺼낼 수 있다 adb sync [ <directory> ] - copy host->device only if changed // 안드로이드를 컴파일하여 자동으로 변경된 파일들을 디바이스에 넣어준다 (-l means list but don't copy) (see 'adb help all') adb shell - run remote shell interactively // 디바이스의 쉘로 들어갈 수 있다 adb shell <command> - run remote shell command // 디바이스에 쉘 명령을 실행할 수 있다 adb emu <command> - run emulator console command adb logcat [ <filter-spec> ] - View device log // 로그를 볼 수 있다. 태그나 로그 레벨 등으로 필터링 가능하다 adb forward --list - list all forward socket connections. // adb 를 네트워크로 포워딩 가능하다 the format is a list of lines with the following format: <serial> " " <local> " " <remote> "\n" adb forward <local> <remote> - forward socket connections forward specs are one of: tcp:<port> localabstract:<unix domain socket name> localreserved:<unix domain socket name> localfilesystem:<unix domain socket name> dev:<character device name> jdwp:<process pid> (remote only) adb forward --no-rebind <local> <remote> - same as 'adb forward <local> <remote>' but fails if <local> is already forwarded adb forward --remove <local> - remove a specific forward socket connection adb forward --remove-all - remove all forward socket connections adb jdwp - list PIDs of processes hosting a JDWP transport adb install [-l] [-r] [-s] [--algo <algorithm name> --key <hex-encoded key> --iv <hex-encoded iv>] <file> // apk 파일을 디바이스에 인스톨할 수 있다 - push this package file to the device and install it ('-l' means forward-lock the app) ('-r' means reinstall the app, keeping its data) // -r 옵션을 주면 설치되어 있는 어플을 지우고 다시 설치한다 ('-s' means install on SD card instead of internal storage) // -s 옵션은 SD 카드에 설치한다 ('--algo', '--key', and '--iv' mean the file is encrypted already) adb uninstall [-k] <package> - remove this app package from the device // 디바이스에 설치되어 있는 어플을 삭제한다 ('-k' means keep the data and cache directories) adb bugreport - return all information from the device that should be included in a bug report. adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|-nosystem] [<packages...>] - write an archive of the device's data to <file>. If no -f option is supplied then the data is written to "backup.ab" in the current directory. (-apk|-noapk enable/disable backup of the .apks themselves in the archive; the default is noapk.) (-shared|-noshared enable/disable backup of the device's shared storage / SD card contents; the default is noshared.) (-all means to back up all installed applications) (-system|-nosystem toggles whether -all automatically includes system applications; the default is to include system apps) (<packages...> is the list of applications to be backed up. If the -all or -shared flags are passed, then the package list is optional. Applications explicitly given on the command line will be included even if -nosystem would ordinarily cause them to be omitted.) adb restore <file> - restore device contents from the <file> backup archive adb help - show this help message adb version - show version num scripting: adb wait-for-device - block until device is online adb start-server - ensure that there is a server running // adb 데몬을 시스템에 띄운다 adb kill-server - kill the server if it is running // 시스템에 떠있는 adb 데몬을 중지시킨다 adb get-state - prints: offline | bootloader | device adb get-serialno - prints: <serial-number> adb get-devpath - prints: <device-path> adb status-window - continuously print device status for a specified device adb remount - remounts the /system partition on the device read-write // system 파티션을 read-write 권한으로 remount 한다 adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery program // 디바이스를 재부팅한다 adb reboot-bootloader - reboots the device into the bootloader // 디바이스를 재부팅하여 bootloader 로 진입한다 adb root - restarts the adbd daemon with root permissions // adb 데몬을 root 퍼미션으로 바꾼다 adb usb - restarts the adbd daemon listening on USB adb tcpip <port> - restarts the adbd daemon listening on TCP on the specified port networking: adb ppp <tty> [parameters] - Run PPP over USB. Note: you should not automatically start a PPP connection. <tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1 [parameters] - Eg. defaultroute debug dump local notty usepeerdns adb sync notes: adb sync [ <directory> ] <localdir> can be interpreted in several ways: - If <directory> is not specified, both /system and /data partitions will be updated. - If it is "system" or "data", only the corresponding partition is updated. environmental variables: ADB_TRACE - Print debug information. A comma separated list of the following values 1 or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport, jdwp ANDROID_SERIAL - The serial number to connect to. -s takes priority over this if given. ANDROID_LOG_TAGS - When used with the logcat option, only these debug tags are printed.
임베디드 리눅스 시스템에 익순한 개발자라면 시리얼 포트로 똑같이 처리할 수 있다. 다만 시리얼 포트로 큰 파일을 전송하기에는 시간이 너무 많이 걸리므로 추천하지 않는다.