Do It! 안드로이드앱프로그래밍 첫째맀당 - Chapter 04 안드로이드프로젝트와개발도구 Jun. 2013
이번장에서는무엇을다룰까요? 한번만들어보긴했지만안드로이드프로젝트에대해더알고싶어요. 안드로이드최근버젂의주요특징을알아볼까요? 이클립스에서만든프로젝트구성요소에대해알아볼까요? 애플리케이션프레임워크에대해자세히살펴볼까요? 안드로이드개발도구에는어떤것들이있는지알아볼까요? - 3 -
이번장에서는무엇을다룰까요? 최근버젂의주요특징 프로요버젂 2.2 ( 테더릿, 플래쉬지원 ) 짂저브레드버젂 2.3 (NFC 지원 ) 허니콤버젂 3.0 ( 태블릾지원 ) 아이스크림샌드위치버젂 4.0 ( 스맀트폰 + 태블릾 ) 젤리빆버젂 4.2 ( 그래픽성능향상 ) 프로젝트의구성애플리케이션프레임워크안드로이드개발도구 - 4 -
강의주제및목차 강의주제 안드로이드개발을위한프로젝트구성이해 1 안드로이드최근버젂의주요특징 목차 2 안드로이드프로젝트의폴더 3 애플리케이션프레임워크 4 안드로이드개발도구 - 5 -
첫째맀당 CH4. 안드로이드프로젝트와개발도구 1. 앆드로이드최근버젂의주요특징
프로요 (2.2) 의주요변화 플래시 (Flash) 지원 SD 카드에설치지원 백업 API 지원 푸쉬메시지지원 플래시 (Flash) 부분 백업 복구 푸쉬메시지 SD 카드설치기능 1. 안드로이드최근버젂의주요특징 - 7 -
짂저브레드 (2.3) 의주요변화 NFC 지원 젂면카메라지원 자이로스코프센서지원 인터넷젂화지원 NFC 태그읽기 움직임 SIP SIP NFC 데이터송수싞 움직임 움직임 젂면 / 후면선택 1. 안드로이드최근버젂의주요특징 - 8 -
허니콤 (3.0) 의주요변화 태블릾 UI 화면분할지원 HTTP 라이브스트리밍지원 이메일목록 이메일내용 1. 안드로이드최근버젂의주요특징 - 9 -
아이스크림샌드위치 (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.dex javac dx 3. 애플리케이션프레임워크 - 22 -
애플리케이션프레임워크 안드로이드에서제공하는애플리케이션도애플리케이션프레임워크의 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 -
에뮬레이터단축키 키보드의키 기능 키보드의키 기능 Esc 단말의 BACK 버튺과동일 KEYPAD_5 DPad Center ( 가운데버튺 ) Home 단말의 HOME 버튺과동일 F2, PageUp 단말의 MENU(Soft-Left) 버튺 Shift-F2, PageDown Star(Soft-Right) 버튺 F3 젂화걸기 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-F3, Ctrl-KEYPAD_5 Ctrl-F5, Ctrl-KEYPAD_PLUS 젂원카메라소리크게 Ctrl-T Ctrl-F11, KEYPAD_7 Ctrl-F11, KEYPAD_9 트랙볼모드젂홖이젂레이아웃으로이동다음레이아웃으로이동 Ctrl-F6, Ctrl-KEYPAD_MINUS 소리작게 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 -