http://blog.daum.net/cutehacker/1987217
안드로이드 자바 개발환경 및 유용한 개발 툴들
스마트 디바이스와 자바 개발 환경
앱이 재설치되는 과정에서 이전의 데이터들을 복구하거나 백업할 필요가 있을 때 자동으로 실행되는 서비스
두 가지 유형의 백업/복구 인터페이스가 있다
Android Tools
● ADB(Android Debug Bridge)
안드로이드 개발에 필요한 도구로서 연결된 단말기 및 에뮬레이터 장치와의 인터페이스를 제공한다. 쉘(Shell)을 이용해 장치에 파일을 넣거나, 장치에 있는 파일을 가져올 수 있는 기능을 제공한다.
● DDMS(Dalvik Debug Monitoring Service)
DDMS는 ADT와 함께 설치되는 개발 툴이다. 현재 연결된 단말이나 에뮬레이터 장치를 보여주며, 현재 실행되고 있는 프로세스들을 보여주는 기능, 디버깅 기능, 메모리 정보를 보여주는 기능 등을 제공한다.
● Android SDK and AVD Manager
개발에 필요한 SDK와 버전별 샘플 코드를 제공한다. 또한 에뮬레이터를 생성 및 삭제하는 기능을 제공한다.
● Emulator
하드웨어를 가상으로 구현한 에뮬레이터를 제공한다. 안드로이드에서 제공하는 에뮬레이터를 AVD(Android Virtual Device)라고 부른다.
● Hierarchy Viewer
레이아웃을 구성하는 요소들의 관계를 보여주는 시각적 도구로 UI를 설계하고 디버깅하는 데 도움을 준다.
● Monkey Test
테스트를 위해 제공되는 프로그램으로 단말기나 에뮬레이터에 무작위로 이벤트를 발생시켜 준다. Touch, Drag, TrackBall, Navigation, Back, Home, System Event 등을 발생시킬 수 있다. 이 기능을 이용해 좀더 완성도 높은 결과물을 얻을 수 있다.
네트워크 트래픽 분석
네트워크를 사용하는 앱을 만들 경우 네트워크 트래픽을 효율적으로 사용하고 있는지 검증하는 작업이 매우 중요하다. 실제 오고가는 패킷을 분석하기 위해 Wireshark(www.wire shark.org/)라는 툴을 많이 사용하고 있다. Wireshark는 해당 툴이 설치된 장치를 통과하는 모든 패킷에 대한 정보를 스니핑(Sniffing)할 수 있다. 안드로이드나 아이폰의 WIFI 통신 패킷을 중간에서 가로채서 실제 패킷의 발생량과 상태, 발생시점 및 응답속도 등을 실시간으로 분석하는 것이 가능하다.
WireShark를 이용해 패킷을 분석하기 위해서는 소프트 AP가 가능한 장비가 필요하다. iMac이나 윈도우7이 설치된 PC에서 소프트 AP를 설정해 동작시킨다. 정상적으로 소프트 AP가 동작하면 Wireshark를 다운로드해 설치하고 안드로이드폰의 WIFI 설정으로 가서 AP를 연결시키면 패킷 내용을 확인할 수 있다.
<그림 1> WireShark 패킷 분석
WireShark를 통해 각 인터페이스(Interface)별로 전송되는 패킷의 내용을 상세하게 확인할 수 있고 각종 통계자료를 이용해 패킷을 분석할 수 있다.
Thread 동작 상태 검증
개발된 앱의 성능을 검증하기 위한 여러 방법 중에서 가장 기본적이면서 놓치기 쉬운 부분이 내부 Thread의 동작 상태를 확인하는 것이다. DDMS를 이용해 생성된 Thread의 수행시간과 점유율 등을 상세히 파악할 수 있다.
안드로이드폰을 디버깅 모드로 연결한 후 DDMS의 Devices 탭을 선택하면 프로세스의 Thread 목록을 선택할 수 있다. 원하는 Thread를 선택하고 Refresh 버튼을 누르면 그 순간의 Thread Stack 정보를 분석할 수 있다. 이때 보이는 Thread의 Status 항목을 이용해 정상 동작 여부를 파악하고 utime과 stime 항목을 이용해 사용자 코드와 시스템 코드의 누적 실행시간을 확인할 수 있다.
앱이 실행될 때 기본적으로 생성되는 Thread에는 여러 종류가 존재한다. 생성되는 Thread의 종류는 다음과 같다.
- Main Thread : 앱에서 사용되는 UI Thread. 앱에서 발생하는 모든 이벤트를 처리
- HeapWorker : Dalvik VM의 Garbage Collection을 수행
- Signal Catcher : 오류 발생 시 Dump 파일 생성 및 시스템 Signal을 받아서 처리
- JDWP : Java Debug Wire Protocol의 약자로 JVM과 Debugger 간의 통신 제공
- Binder Thread : RPC를 수행하기 위해 제공되는 Thread
DDMS의 Devices 탭에서 제공하는 중요한 기능이 하나 더 있다. 바로 Trace View 기능이다. Trace View는 TimeLine과 Profile 패널을 제공하는데 TimeLine 패널은 각 Thread별로 메소드가 언제 수행됐는지 시각적으로 쉽게 파악할 수 있도록 도와주고 Profile 패널은 Thread의 메소드 호출 순서(Call Reference)와 수행시간, 호출 횟수 등을 확인할 수 있도록 제공한다.
<그림 2> Trance View의 TimeLine
UI 렌더링 성능 측정
Android SDK는 안드로이드폰에서의 앱 개발을 위한 다양한 Custom Tool을 제공한다. 그 중에서 Android Emulator는 컴퓨터에서 실행시키는 가상의 모바일 디바이스로서 강력한 기능을 제공한다. 개발자들은 실제 안드로이드폰이 없더라도 에뮬레이터를 이용해 개발, 디버깅, 테스트를 진행할 수 있다.
에뮬레이터가 제공하는 기본 애플리케이션 중에서 Dev Tools는 다양한 성능 측정을 할 수 있는 옵션들을 제공한다. Dev Tools는 소스가 공개되어 있어 코드를 참조해 다양한 성능 측정 툴을 제작하는 것이 가능하다.
<그림 3> 에뮬레이터 Dev Tools의 환경 설정
Pointer Location을 선택하면 터치스크린이 이벤트를 화면에 로깅해서 보여준다. 터치되는 곳의 이벤트를 후킹(Hooking)해서 실시간으로 x, y 좌표를 확인할 수 있다. 이것은 터치 이벤트 관련 로직을 디버깅하거나 검증하는 데 용이하다.
Show screen updates 옵션을 체크하면 UI 렌더링이 일어나는 모습을 시각적으로 확인할 수 있다. 안드로이드에서는 화면에 UI를 렌더링할 때 비동기적으로 처리하는 부분이 많으므로 실제 UI를 렌더링하는 데 소요되는 시간을 측정하기가 어렵다. 이 옵션을 이용하면 렌더링되는 부분이 화면에서 깜빡거리면서 렌더링되고 있음을 시각적으로 확인할 수 있다.
APK 최적화
앱 개발이 완료되면 사용자들에게 앱을 배포하기 위해 사인(Application Signing)하는 과정을 필수적으로 거치게 된다. 이러한 사인 과정은 배포될 앱의 개발자 정보를 표시하고 앱을 다운로드할 사용자와의 신뢰 관계를 위해 반드시 수행해야 한다. 이때 안드로이드에서는 사인 과정을 거친 앱을 최적화하기 위해 ZipAlign(http://developer.android.com/guide/developing/tools/zipalign.html)이라는 툴을 제공한다.
ZipAlign은 APK 파일을 배포하기 위해 필수적으로 거쳐야 하는 툴이다. ZipAlign을 적용하면 앱이 포함하고 있는 파일들의 읽기 성능이 최적화된다. 사이즈가 큰 앱일수록 좀더 높은 속도 향상을 기대할 수 있다.
구글 CodePro Analytix
CodePro Analytix(http://code.google.com/intl/ko-KR/javadevtools/codepro/doc/index.html)는 Eclipse 개발자를 위한 자바 테스트 및 코드 분석 툴이다. 개발자가 발견하지 못한 오류나 예외사항을 찾아내 보다 높은 품질의 프로그램을 개발하는 데 도움을 준다. 원래 상용으로 판매되던 툴이었으나 구글에서 인수해 무료로 배포했다. CodePro Analytix는 Eclipse의 플러그인 형태로 제공되고 있어 한결 쉽게 설치할 수 있다.
제공되는 주요 기능으로는 코드 분석(Code Analysis), 지표 측정(Metrice), JUnit 코드 생성 및 편집 기능(JUnit test code generation, Test Editor), 코드 커버리지 측정(Code Cover age), 의존성 분석(Dependency Analysis), 유사 코드 분석(Similar Code Analysis) 등이 있다.
<그림 4> CodePro Analytix의 Code Coverage 측정
Droid@Screen
개발을 진행하면서 대부분의 버그는 개발자가 해결하지만 완벽한 프로그램이란 존재하지 않는 것 또한 사실이다. 그래서 개발만큼 중요한 것이 QA(Quality Assurance) 과정이다. QA 과정이란 기능 개발을 완료하고 실제 서비스에 들어가기 전에 필수로 거치는 과정으로 정상적인 동작 여부의 검증과 분석 등을 하는 일련의 과정이다. QA를 진행하는 데도 다양한 툴이 사용되는데, 그 중 QA를 자동화하는 데 유용한 툴을 하나 소개하고자 한다.
<그림 5> 단말기 화면의 실시간 캡처
보통 QA 과정은 긴 시간 동안 진행되는 반복 작업이 많은데 동작 과정을 실시간 캡처해 오류가 발생하면 이상 동작을 재현하는 것이 반드시 필요하다. Droid@Screen(http://blog. ribomation.com/droid-at-screen/)은 안드로이드폰에서 디스플레이되는 화면을 실시간 캡처해 동영상으로 녹화할 수 있는 툴이다. 앱을 테스트할 때 Droid@Screen을 이용해 앱의 동작 화면을 실시간으로 캡처하면 로그 정보만으로 오류를 파악하는 것보다 좀더 쉽게 오류를 파악할 수 있다.
Google Java Developer Tools WindowBuilder Pro <그림 6> WindowBuilder Pro WindowTester Pro <그림 7> WindowTester Pro Google Web Toolkit(GWT) <그림 8> GWT Compiler로 자바스크립트 생성 |
마이크로소프트에 게제된 내용을 스크랩하였음.
원본링크
http://www.imaso.co.kr/?doc=bbs/gnuboard.php&bo_table=article&wr_id=39835
'Mobile Development > Android ' 카테고리의 다른 글
안드로이드 자바 개발환경 및 유용한 개발 툴들 (0) | 2013.04.09 |
---|---|
[Android] - 어플 변조를 방지하기 위해서는? (Apktool) (0) | 2013.03.19 |
Android Apk De compile 하는 방법 (0) | 2013.03.19 |
Apk Manager 안드로이드 APK 디컴파일-컴파일 하기 (5.0.2 버전 - ICS 가능) (0) | 2013.03.19 |
[안드로이드] framework-res.apk 수정방법(테마수정, 시스템어플수정) (0) | 2013.03.19 |
dex 파일 디컴파일(decompile) (0) | 2013.03.18 |
SAMSUNG DEVELOPER DAY 2012 (0) | 2012.11.14 |
안드로이드 SDK 설치(Android sdk Install) (0) | 2012.11.14 |
안드로이드의 발전 과정: 1.0에서 젤리빈(Jelly Bean)까지 (0) | 2012.11.10 |
안드로이드 해킹 툴 ‘Anti’ 공개 (0) | 2012.05.09 |