Transcript Document

Do It! 안드로이드 앱 프로그래밍
첫째 마당 - Chapter 04
안드로이드 프로젝트와 개발도구
Jun. 2013
이지스퍼블리싱(주) 제공 강의 교안
저자 : 정재곤
이번 장에서는 무엇을 다룰까요?
한번 만들어보긴 했지만 안드로이드 프로젝트에 대해 더 알고 싶어요.
• 안드로이드 최근 버전의 주요 특징을 알아볼까요?
• 이클립스에서 만든 프로젝트 구성요소에 대해 알아볼까요?
• 애플리케이션 프레임워크에 대해 자세히 살펴볼까요?
• 안드로이드 개발 도구에는 어떤 것들이 있는지 알아볼까요?
-3-
이번 장에서는 무엇을 다룰까요?
최근 버전의 주요 특징
…
…
프로요
버전 2.2
(테더링,플래쉬 지원)
진저브레드
버전 2.3
(NFC 지원)
프로젝트의 구성
허니콤
버전 3.0
(태블릿 지원)
아이스크림샌드위치
버전 4.0
(스마트폰 + 태블릿)
애플리케이션 프레임워크
-4-
젤리빈
버전 4.2
(그래픽 성능 향상)
안드로이드 개발도구
강의 주제 및 목차
강의 주제
안드로이드 개발을 위한 프로젝트 구성 이해
목 차
1
안드로이드 최근 버전의 주요 특징
2
안드로이드 프로젝트의 폴더
3
애플리케이션 프레임워크
4
안드로이드 개발도구
-5-
첫째 마당 – CH4. 안드로이드 프로젝트와 개발도구
1.
안드로이드 최근 버전의 주요 특징
프로요(2.2)의 주요 변화
플래시(Flash) 지원
SD 카드에 설치 지원
백업 API 지원
백업
플래시(Flash) 부분
SD카드 설치 기능
1. 안드로이드 최근 버전의 주요 특징
-7-
복구
푸쉬 메시지 지원
푸쉬 메시지
진저브레드(2.3)의 주요 변화
NFC 지원
전면 카메라 지원
자이로스코프 센서 지원
NFC 태그 읽기
인터넷 전화 지원
움직임
SIP
움직임
NFC 데이터 송수신
전면 / 후면 선택
1. 안드로이드 최근 버전의 주요 특징
-8-
움직임
SIP
허니콤(3.0)의 주요 변화
태블릿 UI
화면 분할 지원
이메일
목록
1. 안드로이드 최근 버전의 주요 특징
이메일
내용
-9-
HTTP 라이브 스트리밍 지원
아이스크림샌드위치(4.0)의 주요 변화
홀로그래픽 UI와
버추얼 키
얼굴인식 언락과
음성인식 텍스트 입력
NFC 빔 공유와
WiFi 다이렉트
터치 & 공유
1. 안드로이드 최근 버전의 주요 특징
- 10 -
젤리빈(4.2)의 주요 변화
그래픽 성능 향상
1. 안드로이드 최근 버전의 주요 특징
확장 가능한 알림 메시지
- 11 -
위젯과 네트워킹 기능 강화
첫째 마당 – CH4. 안드로이드 프로젝트와 개발도구
2.
안드로이드 프로젝트의 폴더
프로젝트의 폴더
폴더
/src
설명
- 자바 소스 파일이 들어있는 폴더
- 표준 자바와 마찬가지로 패키지명과 동일한 하위 폴더들이 만들어짐
- 이 프로젝트를 빌드할 때 타깃(Target)으로 지정한 플랫폼의 기본 라이브러리가 들어있는 폴더 (예, /
/Android <version>
Android 4.2.2)
- jar 파일이 들어 있음
- 리소스 파일이 들어있는 폴더
/res
- XML 레이아웃, 그림 파일, 문자열을 정의한 XML 파일 등이 들어있는데 각 파일의 유형에 따른 하위
폴더들이 만들어져 있음 (예, XML 레이아웃 파일은 [res/layout] 폴더, 그림 파일은 [/res/drawable] 폴더
그리고 문자열을 정의한 XML 파일은 [/res/values] 폴더 밑에 들어 있음)
- ADT가 자동으로 만들어 내는 소스 파일이 들어가는 폴더
/gen
- 이 파일은 프로그래머가 만드는 것이 아니므로 건드리면 안 됨
- 이 폴더 안에는 자바 패키지에 해당하는 하위 폴더와 함께 R.java 파일이 자동으로 만들어짐
/assets
AndroidManifest.xml
default.properties
2. 안드로이드 프로젝트의 폴더
- 이 폴더는 처음에 비어 있음
- 이 폴더에 넣어서 처리하는 파일들을 저장함 (예, 동영상 파일)
- 애플리케이션에 대한 정보를 담고 있는 파일
- 매니페스트라고 부르며 애플리케이션 구성요소나 권한 등의 정보를 정의함
- 프로젝트 설정과 관련된 속성이 들어있는 파일 (예, 빌드 타겟(Target))
- 13 -
프로젝트 빌드 과정
2. 안드로이드 프로젝트의 폴더
- 14 -
프로젝트 빌드 과정 상세
2. 안드로이드 프로젝트의 폴더
- 15 -
첫째 마당 – CH4. 안드로이드 프로젝트와 개발도구
3.
애플리케이션 프레임워크
안드로이드에 대한 기술적 접근
• 안드로이드는 리눅스가 아니다.
- 리눅스 커널을 사용하지만,
- 네이티브 윈도우 시스템이 없으며,
- Glibc를 지원하지 않으며,
- GNU/리눅스 유틸리티들이 없다.
• 안드로이드는 운영체제, 미들웨어 그리고 핵심 애플리케이션을 포함하는 모바일
단말용 소프트웨어 스택(Stack)
• 안드로이드는 리눅스 커널 위에서 동작하는 자바 기반의 애플리케이션 프레임워크
• 안드로이드 SDK는 안드로이드 플랫폼 상에서 자바 언어로 애플리케이션을
개발하고자 할 때 필요한 도구와 API의 집합
3. 애플리케이션 프레임워크
- 17 -
API의 대표 패키지들
• 자바 SDK의 많은 부분이 그대로 지원되므로 기존 개발자들과 친숙함
• 안드로이드만의 라이브러리들이 기본 프레임워크와 휴대단말용 기능들을 제공함
3. 애플리케이션 프레임워크
- 18 -
안드로이드 아키텍쳐
• 아키텍쳐는 커널  라이브러리  애플리케이션 프레임워크  애플리케이션으로 구성
3. 애플리케이션 프레임워크
- 19 -
리눅스 커널
• 안드로이드는 리눅스 커널 위에 만들어졌지만 안드로이드가 리눅스는 아님
• 핵심적인 시스템 서비스들을 제공하며, 프로세스, 메모리, 전원 관리, 네트워크,
드라이버, 보안 등의 내용을 포함
• 표준 리눅스 도구(utilities)를 모두 제공하지 않음
• 안드로이드 커널도 공개되어 있음
3. 애플리케이션 프레임워크
- 20 -
라이브러리와 달빅 VM
• 라이브러리
- C/C++ 로 구성된 라이브러리로 애플리케이션 프레임워크를 통해 사용할 수 있도록 구성됨
• 코어 라이브러리
- 코어 라이브러리는 자바 라이브러리의 대부분 기능을 제공
• 달빅 VM
- 달빅 VM의 실행 파일은 최소한의 메모리에 최적화된 DEX(Dalvik EXecute) 포맷을 사용하며
안드로이드 애플리케이션은 독립적 프로세스를 할당 받음
3. 애플리케이션 프레임워크
- 21 -
달빅 VM
• 안드로이드 애플리케이션을 위한 실행 환경 제공
- 각각의 안드로이드 애플리케이션은 하나의 프로세스로 실행되며 달빅 VM의 인스턴스를 할당받음
- 달빅 VM은 디바이스가 여러 개의 VM을 효율적으로 실행할 수 있도록 구성되어 있음
• 레지스터 기반의 버추얼 머신
• 달빅 실행 포맷(.dex)의 실행
- .dex 포맷은 최소한의 메모리만을 사용할 수 있도록 최적화되어 있음
- 컴파일 시에 생성됨
• 리눅스 커널의 기능에 의존하는 부분
- 스레드 처리와 낮은 수준의 메모리 관리
.java
.class
javac
3. 애플리케이션 프레임워크
- 22 -
.dex
dx
애플리케이션 프레임워크
• 안드로이드에서 제공하는 애플리케이션도 애플리케이션 프레임워크의 API에 기반한 경우 많음
• 간단한 재사용 컴포넌트, 어떤 애플리케이션과도 호환 가능한 호환성을 제공
• 액티비티 관리자 (Activity Manager)
- 애플리케이션의 라이프사이클을 제어함
• 내용 제공자 (Content Provider)
- 애플리케이션 간에 데이터를 공유할 수 있도록 함
• 리소스 관리자 (Resource Manager)
- 코드 이외의 부분인 리소스를 관리함
• 위치 관리자 (Location Manager)
- 자신의 위치 파악에 필요한 기능을 제공함
• 알림 관리자 (Notification Manager)
- 알림 기능을 사용자에게 방해가 되지 않도록 제공함
3. 애플리케이션 프레임워크
- 23 -
애플리케이션
• 모든 애플리케이션은 자바로 작성되며 애플리케이션 프레임워크의 API를
사용할 수 있음
• 안드로이드의 핵심 애플리케이션들은 이메일 클라이언트, SMS 프로그램, 일정
관리(calendar), 지도 처리(maps), 웹브라우저, 연락처 등을 포함함
3. 애플리케이션 프레임워크
- 24 -
첫째 마당 – CH4. 안드로이드 프로젝트와 개발도구
4.
안드로이드 개발도구
SDK에 포함된 개발도구
• SDK 설치 폴더에는 샘플과 개발도구가 들어 있음
4. 안드로이드 개발도구
- 26 -
개발 도구 개요
UI 뷰어 (UI Automator Viewer)
 개발자들이 사용자 인터페이스 구성을 확인하고 최적화할 수 있도록 지원
 사용자 인터페이스를 구성하는 뷰들 간의 계층도를 눈으로 보고 확인할 수 있도록 보여줌
4. 안드로이드 개발도구
- 27 -
개발 도구 개요
디버그 브리지 (Android Debug Bridge)
 도스창에서 명령어를 통해 에뮬레이터나 실제 단말에 안드로이드 패키지 파일(.apk) 설치
(이클립스에서는 이 과정을 메뉴를 통해 실행할 수 있도록 해 주는 것임)
 에뮬레이터나 실제 단말에서 실행되고 있는 애플리케이션에 표준 디버거를 연결
(에뮬레이터를 실행하면 이클립스와 에뮬레이터가 ADB를 통해 연결되는 것임)
4. 안드로이드 개발도구
- 28 -
개발 도구 개요
나인패치 그리기 도구 (Draw 9 Patch)
 NinePatch 이미지를 간단하게 만들 수 있는 그래픽 편집기
 NinePatch 이미지란 뷰의 배경이나 다른 이미지를 위해 사용할 수 있는 크기 조정이 가능한 비트맵 리소스
4. 안드로이드 개발도구
- 29 -
개발 도구 개요
디버그 모니터 서비스 (DDMS)
 개발자들이 에뮬레이터나 실제 단말의 프로세스를 관리하고 디버깅할 수 있도록 도와주는 도구
 기능
- 프로세스 강제 종료
- 디버깅 대상 프로세스의 선택
- 트레이스(trace) 데이터 생성
- 힙(heap)과 스레드(thread) 정보 보기
- 에뮬레이터나 실제 단말의 스크린 캡쳐
4. 안드로이드 개발도구
- 30 -
단말의 SD카드로 파일 옮기기
File Explorer 탭 선택
DDMS 화면 열기
4. 안드로이드 개발도구
- 31 -
파일 가져오기/내보내기
에뮬레이터 단축키
키보드의 키
키보드의 키
기능
기능
KEYPAD_5
DPad Center (가운데 버튼)
KEYPAD_4
DPad Left (왼쪽 버튼)
KEYPAD_6
DPad Right (오른쪽 버튼)
KEYPAD_8
DPad Up (위쪽 버튼)
KEYPAD_2
DPad Down (아래쪽 버튼)
전화걸기
F8
3G/LTE 네트워크 On/Off
F4
전화끊기
F9
코드 프로파일링 설정
F5
검색
Alt-ENTER
전체화면 모드 전환
F7
전원
Ctrl-T
트랙볼 모드 전환
Ctrl-F3, Ctrl-KEYPAD_5
카메라
Ctrl-F11, KEYPAD_7
이전 레이아웃으로 이동
Ctrl-F11, KEYPAD_9
다음 레이아웃으로 이동
Ctrl-F5, Ctrl-KEYPAD_PLUS
소리 크게
Ctrl-F6, Ctrl-KEYPAD_MINUS
소리 작게
Esc
단말의 BACK 버튼과 동일
Home
단말의 HOME 버튼과 동일
F2, PageUp
단말의 MENU(Soft-Left) 버튼
Shift-F2, PageDown
Star(Soft-Right) 버튼
F3
4. 안드로이드 개발도구
- 32 -
참고 문헌
[ References]
• 기본 서적
2013, 정재곤, “Do it! 안드로이드 앱 프로그래밍(개정판)”, 이지스퍼블리싱(주)
• Android Website
http://www.android.com/
• Google Developer’s Conference
http://code.google.com/events/io/
• Android SDK Documentation
References
- 33 -