ADB 명령어 및 Log Filter

개발 조회 수 1811 추천 수 0 2017.06.12 11:06:43

ADB 명령어 및 Log Filter


출처 : http://blog.naver.com/sshohan/220957457422


1. ADB(Android Debug Bridge) 개념
 - 안드로이드 장치들을 제어하기 위한 안드로이드 디버깅 도구 중 하나
 - adb는 CLI 형식으로 안드로이드 기기와 통신을함
 - adb는 android sdk에 포함되어 있으며, sdk 설치 폴더의 하위 폴더인 platform-tools에 푸함되어 있음.
 - 구성요소
  @ 클라이언트 : 안드로이드 개발 시스템에서 실행
  @ 서버 : 안드로이드 개발 시스템에서의 백그라운드 프로세서(5037 port)
  @ 데몬 : 에뮬레이터나 장치에서 백그라운드 프로세서로 동작하는 인스턴스
 - 서버가 5037port로 바인드하고, 5555~5585 까지의 포트를 스캔하여 adb 데몬이 발견될 경우 연결하여 클라이언트와 접근을할 수 있도록 한다.
 - 안드로이드 장치를 USB를 통해 연결하고자 할 경우에는 장치 시스템 설정에서 USB 디버깅을 활성화 해야함.(빌드정보 7번 터치)

2. ADB를 이용한 디바이스 장치 선택
 1) adb devices : 디바이스 목록 조회
 2) adb shell : 데몬의 쉘 접근
  @ -d 옵션 : USB 장치로 접근(adb -d <명령어>)
  @ -e 옵션 : 에뮬레이터로 접근(adb -e <명령어>)
  @ -s 옵션 : 지정된 장치로 접근(adb -s <장치명> <명령어>)

3. ADB를 이용한 디버그 기능
 1) logcat

  - http://cafe.naver.com/LogcatFilter (Log 기능을 이용하여 만들어진 필터링 프로그램)
  - 안드로이드 장치에서 발생하는 로그 메시지를 화면으로 출력하거나 파일 형태로 저장하는 기능
  - 수집된 정보들은 각종 애플리케이션과 스템에서 수집하는 정보
  - 사용법1 : adb logcat [<option>] ... [<filter>]
  - 사용법2 : adb shell root@emu# logcat
  - 로그 우선순위 : S(Silent) > F(Fatal) > E(Error) > W(Warning) > I(Info) > D(Debug) > V(Verbose)
  - 옵션
   @ -b <buffer> : 안드로이드 로그 시스템은 다양한 유형(radio, events, main)의 버퍼를 가지고 있는데 버퍼를 선택할 수 있음

      (ex) adb logcat -b <radio | events | main>)
   @ -c : 기록된 로그 메시지를 삭제하고 종료
   @ -d : 로그 메시지를 화면에 덤프하고 종료
   @ -f <filename> : 로그 메시지를 파일로 저장
   @ -g : 선택된 버퍼의 크기를 출력하고 종료(ex) adb logcat -g -b events)
   @ -n <count> : 저장되는 로그 파일의 개수를 지정
   @ -r <size> : 저장되는 파일 용량 설정(ex) adb logcat -f /sdcard/file -n 5 -r 1024)
   @ -s 기본 필터의 종류를 S(Silent)로 지정(주로 지정 후 필터를 걸어 특정 로그만 볼때 사용)
   @ -v <format> : 특정 메타데이터 필드를 선택하면 로그 메시지 출력 가능 
     # brief : 로그 메시지의 우선순위/태그와 메시지가 발생한 프로세스의 PID
     # process : PID 출력
     # tag : 로그 메시지의 우선순위 / 태그를 출력
     # raw : 로그 메시지의 원본 메시지만을 출력
     # time : 로그 메시지의 날짜, 호출시간, 우선순위/태그와 메시지가 발생한 PID 출력
     # threadtime : 로그 메시지의 날짜, 호출시간, 우선순위, 태그와 메시지가 발생한 PID, TID
     # long : 모든 메타데이터 필드와 메시지를 표시함.
  - 필터구성 : tag:priority (ex) *:S)
 2) bugreport
  - dumpsys, dumpsys, logcat 명령의 결과를 한 번에 출력
  - dumpsys : 안드로이드 장치의 애플리케이션 및 장치 정보를 자세히 표시
   # 하위멤버 : meminfo, cpuinfo, account, activity, window, wifi, power 등
   # 예시 : adb shell dumpsys meminfo
  - dumpstate : 안드로이드 장치의 모든 상태 정보를 출력
   # 예시 : adb shell dumpstate
 3) jdwp
  - 안드로이드 장치에서 사용할 수 있는 jdwp 프로세스의 목록을 출력
  - jdwp(Java Debug Wire Protocol) : 자바 애플리케이션 디버깅에 사용
  - jdwp를 이용해 특정 애플리케이션의 프로세스 번호를 알아내고, 이를 디버거에 연결하여 디버깅 할 수 있음
  - adb jdwp 로 명령을 실행해 실행되고 있는 PID를 습득 후 디버깅할 프로세스를 시작시킨 후 다시 adb jdwp 를 실행시켜 

    PID를 얻는다..

4. 데이터 기능
 1) Install
  - 연결된 안드로이드 장치에 사용자가 원하는 애플리케이션을 추가
  - 사용법 : adb install <apk명>
  2) Uninstall
  -애플리케이션을 삭제
  - 사용법 : adb uninstall <설치된 패키지 이름> 
  - 패키지정보 확인법 : adb shell pm list packages -f
  3) Pull / Push
   - 안드로이드 장치에서 파일을 꺼내오거나 넣음

5. 포트와 네트워킹 기능
 1) Forward
  - 특정 로컬 포트를 안드로이드 장치의 특정 포트와 소켓 통신이 가능하도록 포워딩
  - 사용법 : forward <로컬> <원격지>
  - 예시 : adb forward tcp:7777 tcp:8888
  - 지원되는 항목
   # tcp:<portnum>
   # local:<UNIX domain socket name>
   # dev:<character device name>
   # jdwp:<pid>
  - adb jdwp 를 이용하여 디버깅할 프로세스의 pid를 구한 후 forward 명령어를 이용해 로컬 포트와 연결을한 후 jdb 를 

    이용하여 대상 어플리케이션의 디버깅을 활성화함.
   # jdb 사용법 : jdb -sourcepath .\src -connect com.sun.jdi.SocketAttach:hostname=localhost,port=7888

6. 스크립팅 기능
 1) get-serialno
  - 연결된 자치의 시리얼 번호를 문자열로 출력
  - adb devices 명령을 수행했을 때 출력되는 연결된 장치의 이름이며, 해당 명령은 사용자에 의해 자동화 스크립트나 시리얼 번호만 필요로 하는 경우 필요에 따라 다양하게 활용
 2) get-state
  - 연결된 안드로이드 에뮬레이터나 장치의 상태를 문자열로 출력
 3) wait-for-device
  - 에뮬레이터나 장치가 구동될 때 까지 ADB를 통한 명령 실행을 멈춰 놓고 장치가 device 상태가 되면 명령과 함께 

 설정된 명령어를 수행
  - 사용법 : adb wait-for-device <명령어>
  - 예시 : adb wait-for-device shell getprop

[출처] ADB 명령어 분석|작성자 zer0water

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 개발 오디오 분석을 위한 소스 빌드 사전작업 secret eastsky 2010-12-16 3
공지 개발 Android Tips secret eastsky 2010-11-15 5
27 개발 Android6.0 - PowerManagerService状态分析 eastsky 2017-07-21 752
26 개발 Android6.0 - PowerManagerService Notifier 分析 eastsky 2017-07-21 705
25 개발 Android 개발 전반에 대한 연재 eastsky 2017-06-13 1158
24 개발 kBuild eastsky 2017-06-13 1136
23 개발 Kbuild system eastsky 2017-06-13 1360
22 개발 [Linux] make menuconfig 사용방법 [1] eastsky 2017-06-12 1629
» 개발 ADB 명령어 및 Log Filter eastsky 2017-06-12 1811
20 개발 GNU Make eastsky 2017-06-09 1397
19 개발 Android Build System [1] eastsky 2017-06-09 1662
18 개발 Linux and Android - Suspend / Resume eastsky 2012-12-24 30412
17 개발 안드로이드 터치 보정값을 얻자. file [1] 이종일 2011-02-23 42955
16 개발 Android에 BusyBox 첨가 하기. [3] 이종일 2011-02-22 48676
15 개발 Android 동호문서 따라하기 file 이종일 2011-02-18 29595
14 개발 Linux RamDisk 참고 자료 file 이종일 2011-02-17 33247
13 일반 Android 2.3 Platform Highlights eastsky 2010-12-08 20047
12 개발 안드로이드 초기화 과정 eastsky 2010-12-02 43045
11 일반 하이씨엘 앱 에디터 eastsky 2010-12-01 23703
10 개발 Android 2.2 - Market Client on ADV file eastsky 2010-11-30 26052
9 개발 Android 2.2 - SDK & AVD Manager file eastsky 2010-11-30 27316