본문 바로가기

IT_Story/안드로이드

여러가지 기능의 Android Tool 소개

1. DDMS

1.1 소개

  • Dalvik Debug Monitor Server
  • 어플리케이션을 개발하기 위해 필수적인 도구들을 모아놓은 툴
    • Process Control
    • Emulator Control
    • LogCat
    • File Explorer
    • Network Traffic 확인 (안드로이드 4.0버전 이상부터 가능)
    • SMS 및 Call 기타 기능
  • 실행방법
    • Eclipse Plugin : window -> open perspective -> other -> DDMS
    • command 창 : tools/ DDMS

1.2 DDMS 기능

1.2.1 Process control
  • 사용하고 있는 여러 Device들에 대한 정보를 확인할 수 있다.
  • (Heap Viewing) process의 Heap 사용량을 확인할 수 있다.

  • (Allocation of Objects) Object들의 method, line수와 같은 디테일한 정보를 확인할 수 있다.

1.2.2 Emulator control
  • Emulator의 상태를 확인할 수 있다.
  • 기능
    • Telephony status : Telephony Action 전화 걸기, 문자 보내기
    • Incoming number : 번호 입력 후 call 누르면 동작
    • Location control : 위치 설정

1.2.3 File Explorer
  • 탐색기와 같은 기능을 지원하며 트리 구조로 쉽게 볼 수 있다.
  • permission이 있기에 수정이 불가하다.
  • Device에 File push & pull 할 수 있다.

1.2.4 LogCat
  • Device Log들을 확인하며 원하는 태그명으로 Log를 필터링할 수 있다.
  • 색깔 및 약자 알파벳 분류
    • 검은색, V - verbose
    • 파란색, D - debug
    • 초록색, I - information
    • 주황색, W - warning
    • 빨간색, E - error

2. ADB

  • Android Debug Bridge의 약자
  • 연결된 Device 및 Emulator와의 인터페이스를 제공한다.
  • 여러기능을 수행할 수 있는 command line tool이다.
    • adb devices : device 정보를 확인하며 연결된 devices의 TCP/IP 포트 번호를 알아낼 수 있다.

    • adb install -l -r filename.apk : apk파일을 emulator/device에 설치할 수 있다.
      • -l : 다른 장치로 복사되는 것을 말한다.
      • -r : 이미 존재하는 app 데이터를 지우지 않은 채 재설치를 한다.

    • adb uninstall -k pakcage : 패키지 이름을 가진 app을 제거한다.
      • -k : app의 데이터를 보존한다.
    • adb shell : 타겟 시스템의 쉘에 언결하고 # 프롬프트를 띄운다. 간단한 명령으로 탐색 및 수정할 수 있다.
      • adb shell chmod 655 system/app/Phone.apk : 해당 기기의 /system/apk 폴더에 있는 Phone.apk파일 권한 설정
      • adb shell tcpdump –i any –p –s 0 –w /data/packet.pcap : tcpdump를 이용해서 캡쳐 시작
        • -i any: 아무 network interface 지정
        • -p : promiscuous mode를 실행 시키지 않을 때 (promiscuous mode : 자신의 주소값을 무시하고 모든 패킷을 받아들이는 상태)
        • -s 0 : 전체 패킷 캡쳐
        • -w : 저장위치 지정
      • adb shell mount –t ext3 –o rw,remount /dev/block/mmcbk0p6 /system : mount 상태로 만듬
    • adb pull /data/tcpdump. pcap : logging 한 pcap 파일을 pc로 저장한다.
    • adb kill-server : adb에 문제가 있을 경우, adb를 종료시킨다.
    • adb start-server : 종료된 adb를 실행시킨다.
    • adb reboot : 안드로이드 시스템을 리부팅 시킨다.
    • adb push local remote : 컴퓨터에 local이란 이름을 가진 파일을 타겟 시스템에 remote란 이름으로 복사한다.
    • adb pull remote local : 타겟 시스템에 있는 remote라는 파일을 컴퓨터에 local이란 이름으로 복사한다.
    • adb ppp <tty> parameters : USB에 있는 PPP 실행
  • ADB shell 명령어
    commanddescription
    ls현재 디렉토리 파일을 보여준다.
    echo화면에다가 다음 문자를 출력한다.
    mkdir디렉토리를 새로 생성한다.
    mv파일을 이동시킨다.
    cd현재 위치를 변경시킨다.
    pwd현재 위치를 나타낸다.
    cp파일을 복사한다.
    bootanimation부팅 에니메이션을 보여준다.
    stop/rebootEmulator가 멈춘다/재부팅된다(device에서는 안됨)
    uptime휴대폰이 켜지고 난 후로 작동된 시간을 알려준다.
    dumpsyssystem data의 dump를 표시한다.
    dumpstatestate의 dump를 파일로 저장한다.
    logcatoption....filter-spec...logging을 가능하게 하거나 화면에 표시한다.
    dmesgkernel debugging message를 화면에 출력한다.
    startDevice를 시작하거나 재시작한다.
    stopDevice를 종료한다.
    netcfg네트워크 인터페이스와 IP주소 목록을 확인한다.
    netstat네트워크 연결상태 확인한다.

3. Hierarchy viewer

  • 레이아웃을 구성하는 요소들의 관계를 보여주는 시각적 도구
  • 개발자가 UI 인터페이스를 디버깅하고 최적화 할 수 있도록 도와주는 툴

3.1 LayoutView

  • Layout을 구성하고 있는 View 계층 구조에 대해 시각적으로 확인할 수 있다.

3.1.1 Tree view
  • layout과 widget의 존재 및 호출되어 실행되는 정보를 확인할 수 잇다.
    • Device에 나타나는 부분
    • 자신과 child 노드의 수 및 수행 시간
    • class 이름과 layout ID
    • Measure, Layout, Draw의 performace indicators
      • 녹색 : 트리에서 절반정도 빠르다.
      • 노란색 : 트리에서 절반정도 느리다.
      • 빨간색 : 트리에서 제일 느린 것 중에 하나이다.

3.1.2 Property view
  • 해당 view의 property와 value를 확인할 수 있다.

3.2 Pixel perfect window

  • 실제 화면 상에 그려진 모습을 확대해서 자세히 볼 수 있다.
  • Explorer view : View 계층 구조를 보여준다.
  • Normal view : 일반적인 Device 화면을 보여준다.
  • Loupe View : Pixel단위로 되어있는 확대된 화면을 보여준다.

4. Lint

  • ADT ver.16에서 새롭게 소개된 툴이다.
  • 어플리케이션 내의 리소스(레이아웃, 문자열 등)의 오류를 미리 검사한다.
  • 어플리케이션 실행에는 문제가 없으나 잠재적으로 문제를 발생시킬 수 있는 항목을 찾아주는 역활을 한다.
  • ADT버전이 업그레이드(ADT 21.1.0)가 되면서 이전 버전의 API 오버라이디오가 XML resource, graphic asset 및 manifest tag를 포함한 lint check들이 추가되었다.
  • 여러가지 error type들
    • performance (예: 사용하지 않는 resource, 일관성 없는 배열 크기)
    • accessibility & internationalizatoin (예: 하드코딩 된 string이나 한글일 경우)
    • security (예: 아이콘 문제-사이즈 에러 및 중복된 아이콘)
    • usability (예: input type이 정해져있지 않을 경우)
    • correctness (예: API버전이 다를 경우)

5. Traceview

  • 어플리케이션에서 나온 실행 로그 그래픽 뷰어
  • 디버깅 및 성능을 프로파일 할 수 있다.
  • 모든 함수의 초기화와 각 method에서 머문 시간이 기록되어 보여주는 툴이다.
    • Timeline panel : 각 thread와 method의 start, stop을 표현하여 그래프로 보여준다.
    • Profile panel : method 안에 일어난 내용을 분석하여 list로 보여준다.
      • Incl% : 함수와 함수가 호출한 함수에서 소비한 총 시간 (밀리초 단위로 표현된다)
      • Excl% : 해당 함수 자체에서만 소비한 시간
      • Calls+Recursive calls : 외부에서 함수를 호출한 횟수 + 자신을 스스로 호출한 횟수
      • Time/Call : 소비시간/호출횟수