1. 안드로이드란무엇인가? 안드로이드는구글을중심으로한 OHA(Open Handset Alliance) 컨소시엄에서만든최초의오픈소 스모바일애플리케이션플랫폼 리눅스커널을기반으로한운영체제, 풍부한 UI(user Interface), 다양한애플리케이션, 라이브러리, 애플리케이션프레임워크, 멀티미디어지원등의구성요소들을포함하며휴대전화기능도포함 되어있다. 운영체제와연관된컴포넌트들은 C/C++ 로작성, 일반사용자애플리케이션들과내장된애플리케 이션들은자바로작성 2. 안드로이드의특징 1) 운영체제의핵심이라고할수있는커널은공개운영체제인리눅스에기반한다. 2) 자바언어를기반으로프로그램을작성한다. 3) 개방된환경인만큼개발툴과관련문서들이모두무료로제공 3. 안드로이드플랫폼 1
1) 리눅스커널 메모리관리, 프로세스관리, 파일시스템관리, 네트워크스택등하드웨어지원 2) Native 라이브러리 (C, C++) 안드로이드프레임워크에서필요한 C 와 C++ 라이브러리 3) 안드로이드런타임 코어라이브러리지원, Dalvik Virtual Machine 으로안드로이드애플리케이션실행환경제공 4) 어플리케이션프레임워크 안드로이드어플리케이션개발시필요한 API 제공 상세구성요소 기능설명 Activity Manager 애플리케이션의생명주기를관리한다. 2
Window Manager 윈도우의모양이나크기등을관리한다. Content Manager 애플리케이션이다른애플리케이션의정보나메시지를공유, 작업 등을요청하는기능을담당한다. View System 윈도우매니저와같이리스트, 텍스트박스, 버튼및다이얼로그 등애플리케이션제작을용이하게하는 UI 세트를제공한다. Notification Manager 콜수신, 메시지수신, 배터리부족, 시스템상태변화, 네트워크시 그널등이벤트발생에따라상태바나토스트와같은알람을디 스플레이하는기능을한다. Package Manager 패키지설치, 제거등을지원하는관리자이다. Telephony Manager 음성및영상통화, MMS/SMS, SIM/USIM 관리한다. Resource Manager 애플리케이션에게파일, 그래픽등의자원할당하고해제한다. Location Manager 위치정보를제공하는기능을담당한다. 5) 어플리케이션 Email 클라이언트, SMS 프로그램, 달력, 지도, 브라우저등의코어어플리케이션 4. 안드로이드프로그램구조 1) 뷰 뷰 (View) 는사용자와직접상호작용을할 UI 를의미한다. 2) 액티비티 보통액티비티와 UI 화면은일대일대응관계를갖고시스템혹은사용자로부터시작된이벤트에 반응한다. 3) 인텐트 컨포넌트간의통신수단이며메시지에대한상세한정보를가진다. 예를들면주소록목록액티 비티에서편집액티비티를호출할때누구의주소를어떤식으로편집하라는지시가인텐트에실 려전달된다. 4) 서비스 3
서비스는주로백그라운드에서돌아가는실행코드로, 일단실행되면휴대폰이꺼질때까지돌아 간다. 서비스는일반적으로사용자인터페이스가없다. 예 ) MP3 플레이어 5) 브로드캐스트리시버 (BroadcastReceiver) 만약애플리케이션이전화가오거나문자메시지수신과같은이벤트를받거나반응하기를원한다 면반드시브로드캐스트리시버로서등록되어있어야만한다. 신호만대기할뿐 UI 를따로가지 지는않으므로신호수신시적절한액티비티를띄워내용을전달한다. 6) 컨텐트프로바이더 다른응용프로그램을위해자신의데이터를제공한다. 안드로이드는보안이엄격하여다른응용 프로그램의데이터를함부로액세스하지못하도록되어있다. 응용프로그램간에데이터를공유 할수있는합법적인유일한장치가바로콘텐트프로바이더이다. 5. 사용가능한구성요소 1) 데이터보관 2) 네트워크 3) 멀티미디어 4) GPS 5) 전화서비스 6. 안드로이드응용프로그램의핵심파일들과디렉터리들 안드로이드파일설명 AndroidManifest.xml AndroidManifest.xml파일은응용프로그램의전역설정을담는다. 이파일은응용프로그램의능력, 권한, 실행방식등정의 project.properties project.properties 파일은자동으로생성되는프로젝트파일로, 응용프로그램의빌드대상과기타적절한빌드시스템옵션들정의. 4
src폴더 bin폴더 gen폴더 res폴더 res/drawablehdpi/ic_launcher.png res/drawable-ldpi/ ic_launcher.png res/drawable-mdpi/ ic_launcher.png res/layout/main.xml res/values/strings.xml 응용프로그램의모든소스코드를담는필수폴더컴파일된애플리케이션코드가들어감응용프로그램을위해자동으로생성된자원 (resource) 파일들을담는필수폴더. R.java( 응용프로그램자원관리자소스파일 ) 자동생성아이콘이나 GUI 레이아웃등컴파일된자바코드와함께애플리케이션패키지에포함될파일보관고해상도이미지폴더저해상도이미지폴더중해상도이미지폴더단일화면레이아웃파일응용프로그램문자열자원들 7. Resource 디렉토리구조 자원형식 필수디렉토리 파일이름 핵심XML 요소이름 ( 적용되는경우에만 ) 문자열 /res/values/ strings.xml( 권장됨 ) <string> 문자열배열 /res/values/ arrays.xml( 권장됨 ) <string-array> 색상값 /res/values/ colors.xml( 권장됨 ) <color> 크기 (dimension) /res/values/ dimens.xml( 권장됨 ) <dimen> 단순표시물 (drawable) /res/values/ drawables.xml( 권장됨 ) <drawable> 비트맵그래픽 /res/drawable/ 예 :img.png, img.jpg, img.gif, 지원되는 그래픽 파일 red_oval.xml 또는도형등의표시물 을정의하는 XML파일들. 애니메이션시퀀스 ( 트위닝 ) /res/anim/ 예 : fancy_anim1.xml, fancy_anim2.xml <set>, <alpha>, <scale>,<translate>, <rotate> 메뉴파일 /res/menu/ 예 : my_menu1.xml, <menu> 5
More_options.xml XML 파일 /res/xml/ 예 : some.xml, more.xml 개발자가정의. 원본 (raw) 파일 /res/raw/ 예 : some_audio.mp3, some_text.txt 레이아웃파일 /res/layout/ 예 : start_screen.xml, main_screen.xml 다양함. 반드시레이아웃요소이어야함 스타일및테마 /res/values/ styles.xml, themes.xml( 권장됨 ) <style> 8. 결과로얻어지는디렉토리 bin/classes/ bin/classes.dex bin/resources.ap_ bin/app_name.apk 컴파일된자바클래스컴파일된자바클래스로만든실행파일애플리케이션의모든리소스파일실제안드로이드애플리케이션 ( 애플리케이션의모든파일을묶은형태 ) 9. 마니페스트파일의구조 Manifest uses-permission permission package : 패키지명 android:versioncode : 버전코드 ( 운영체제가어플의업그레이드를관리하기위해사용 ) android:versionname : 버전이름 ( 어플을내려받을때사용되는버전정보 ) 태그는안드로이드애플리케이션에반드시보안관련권한이필요함을나타낸다 - ACCESS_FINE_LOCATION : GSP 위치추적기능에필요한권한 - ACCESS_LOCATION_EXTRA_COMMANDS : 위치와관련된추가기능에대한권한. - CALL_PHONE : 다이얼러로전화를걸수있는권한. - ACCESS_MOCK_LOCATION : 에뮬레이터에서실행할때가상위치정보를사용할수있는권한 - INTERNET : 인터넷접속권한이다. - ACCESS_COARSE_LOCATION : 지도사용시권한외부액티비티나서비스가내부데이터나기능을사용하고자할때 6
instrumentation uses-library uses-sdk 필요한권한지정액티비티가실행되는등의주요시스템이벤트가발생했을때애플리케이션의어느부분을호출하지지정지도서비스처럼추가로연동되는안드로이드컴포넌트를지정애플리케이션을어느버전의안드로이드환경에서사용할수있는지알려줌 service receiver application Level 1 : 안드로이드 1.0 SDK Level 4 : 안드로이드 1.6 SDK Level 7 : 안드로이드 2.1 SDK Level 8: 안드로이드 2.2 SDK Level 10 안드로이드 2.3.3 SDK Level 11 안드로이드 3.0 SDK Level 12 안드로이드 3.1 SDK Level 13 안드로이드 3.2 SDK Level 14 안드로이드 4.0 SDK 서비스지정브로드캐스트리시버지정실제애플리케이션과관련된내용기술 android:icon 어플의아이콘설정 android:label 어플의이름설정 ------------------------------------------ <activity> android:name 액티비티클래스의이름 android:label 액티비티가화면에떴을때가장위에표시할레이블 ------------------------------------------ <intent-filter> action 안드로이드는애플리케이션을시작할때 MAIN action을선언한액티비티를찾는다. category 안드로이드는이속성을통해찾아야하는인텐트필터를한정한다. 7