To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부
안드로이드정의및아키텍처 안드로이드커널접근 애플리케이션기초및컴포넌트 2
안드로이드는운영체제 (operating system), 미들웨어 (middleware), 핵심애플리케이션들 (key applications) 을포함하고있는모바일디바이스를위한소프트웨어스택 (software stack) 이다. 안드로이드는모바일기기의외관, 분위기, 기능을모양지을수있는모바일애플리케이션을작성하기위한 API 라이브러리셋과더불어, 운영체제, 미들웨어, 핵심애플리케이션을포함하는오픈소스소프트웨어 (OSS: open source software) 스택이다. 3
Android 1.5 Android d 1.11 (Cupcake) Android d 1.6 (Donut) Android 2.1 (Eclair) Android 2.2 (Froyo) Gingerbread 2010. 5 release 4
Galaxy S [2.1] LG KH5200 [1.5 2.1] SKY 시리우스 [2.1] HTC Touch [2.1] NexusOne [2.1 2.2] Sony Ericsson Xperia [1.6 2.1] 5
Application framework 컴포넌트의재사용과대체 (replacement) 를가능하게함 Dalvik virtual machine 모바일디바이스에최적화됨 Integrated browser Optimized graphics ( 최적화된그래픽 ) 구글이제작한 2D 그래픽라이브러리제공 SGL: Skia Graphics Library SQLite Lightweight database 기능을제공함 Media support 잘알려진오디오, 비디오, 이미지포맷을지원함 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) 6
GSM telephony, CDMA telephony 전화기능제공을의미함 ( 하드웨어의존적기능임 ) Bluetooth, EDGE, 3G, WiFi ( 하드웨어의존적기능임 ) Various sensors (sensor rich device) Camera, GPS, 나침반, 가속도센서등 풍부한개발환경 Eclipse IDE, device emulator, debugging tools, profiler 등 7
8
안드로이드정의및아키텍처 안드로이드커널접근 애플리케이션기초및컴포넌트 9
에뮬레이터가수행중인상태에서다음과같이입력한다. adb s emulator-5554 shell 5554는포트번호이다. ( 추후자세히설명 ) 포트번호확인 10
11
12
13
14
15
16
17
안드로이드정의및아키텍처 안드로이드커널접근 애플리케이션기초및컴포넌트 18
Library Java (classes) aapk.apk (android package) identifiers Resource & Configuration aapk: android application package tool 19
Native apk: /system/app 디렉토리에있음 당근, 에뮬레이터를실행후, 리눅스에접근해야합니다. native applications 20
Third party apk: /data/app 디렉토리에있음 third party applications ( 즉, 제가만든 application 입니다 ) 21
애플리케이션은여러개의컴포넌트로구성된다. 한애플리케이션이다른애플리케이션의컴포넌트를사 용할수있다. 내 app 에서다른 app 에서만든 scroller 를사용할수있다. 다른 app 의코드를통합 / 링크하지않고, 필요할때해당영역 (piece) 을간단히구동시킨다. 컴포넌트? 22
Component 에대한정보, configuration 등을담고있음 Android application components 그림 : from kandroid.org 23
우리가볼수있는 visual interface 를가진다. 예를들어, 사용자에게선택기능을제공하는메뉴아이템리스트 사진과함께캡션을보여주는기능 텍스트메시징애플리케이션의경우 첫번째, 컨택 ( 전화번호부 ) 리스트를보여주는액티비티 두번째, 메시지를작성하는액티비티 세번째, 받은편지함의메시지를보여주는 액티비티 사용자액티비티는 Activity 의 sub-class 로만들어진다. 24
Skeleton of an Activity 그림 : from kandroid.org 25
Example of an Activity 26
Visual interface 를가지지않는다. ( 눈에보이지않은채 ) 백그라운드에서수행된다. 예 : music player, network download 실행중인서비스에접속 (connect) 이가능하다. 음악재생과정에서, 되감기, 정지등이수행됨 Service 는 main thread 에서수행될 수있으나, 다른컴포넌트의 user interface에영향을주지않도록 별도의 thread 로작동시킨다. 27
( 아무것도하지않으나 ) broadcast announcement 를 수신하고응답한다. 배터리부족, 언어설정바뀜등의시스템공지를수신 / 처리함 대표적인예가 SMS 수신임 Visual interface 를가지지않으나, 정보수신시, 이를처리하는 activity 를시작하거나, NotificationManager i 를사용하여 사용자에게이를알릴수있다. 28
애플리케이션간에공유가능한데이터집합을만든다. 예 : 전화번호부, photo gallery SQLite 혹은 file 을사용할수있으며, 자신이관리하는데이터의 공유를위해표준 method 집합을구현한다. ContactsProvider 29
안드로이드는애플리케이션컴포넌트를시작하기전에, 컴포넌트존재를인식해야한다. 컴포넌트들이 Manifest.xml 파일에선언된다. AndroidManifest.xml은 XML 파일로서, 컴포넌트선언, 퍼미션등의 configuration 정보를가진다. 30
근데, XML 이뭐야? ( 위키 : http://en.wikipedia.org/wiki/xml) HTML: HyperText Markup Language SGML: Standard Generalized Markup Lanaguge XML: extendsible Markup Language) XML 을엄청잘알아야하나요? 꼭그렇진않아요. 그때그때필요한걸배우면되요. 기본적인구조는 HTML 과거의유사합니다. 태그만뺴고 HTML 도모르겠다고요? 그건, 아닌데 까먹었다고요? http://cs.kangwon.ac.kr/~ysmoon/courses/2010_1/wp/05.pdf ac kr/ 1/wp/05 pdf 31
An example of AndroidManifest.xml Activity 선언 Application i 선언 32
33