구성요소


4가지 컴포넌트(Activity, Service, Broadcast Receiver, Content Provider)


1.Activity : 사용자 인터페이스 화면을 구성하는 컴포넌트

2.Service : 백그라운드에서 실행되는 컴포넌트, 시각적인 사용자 인터페이스를 가지지 않음

3.Broadcast Receiver : 배터리, 언어 변경 등의 특정 브로드캐스트를 수신하거나 반응하는 컴포넌트

4.Content Provider : 어플리케이션 간의 데이터 공유를 위해 표준화된 인터페이스를 제공하는 컴포넌트


Intent

- 컴포넌트에 액션, 데이터 등을 전달하는 메시지 요소

- 다른 액티비티, 서비스, 브로드캐스트 리시버, 컨텐트 프로바이더 등을 실행하는 것으로 이들 사이에서 데이터를 주고 받기 위한 용도로도 쓰인다.


어플리케이션 구조(MVC 모델로 구성)

-MODEL : 어플리케이션의 데이터를 저장하는 역할을 담당하며, 안드로이드에 내장된 SQLite, File 그리고 어플리케이션 간의 데이터 공유를 위해 사용할 수 있는 Content Provider가 이 영역에 속한다.

-VIEW : 화면 구성을 담당하는 영역이며, View 클래스를 상속하는 클래스를 사용해서 구성할 수 있다.

-CONTROL : VIEW와 MODEL을 서로 연결하고 제어하는 영역이며, 이 영역에는 Activity, Service, Broadcast Receiver)가 포함된다.

----------------------------------------------------------------------------------------------------

연습문제


안드로이드 레이아웃의 종류


LinearLayout : 레이스라인 기준으로 하위 뷰나 뷰그룹을 정해진 방향에 따라 하나씩 배열하는 방식의 틀을 제공


RelativeLayout : 레이아웃의 경계선을 기준으로 뷰나 뷰그룹 간에 상대적인 위치에 따라 배치한다.


FrameLayout : 단말기 화면을 뜻하는데 모든 하단 뷰를 동일하게 좌측 상단 모서리에 고정시키게 되고 다른 위치에 배치하지 않는다.


GridLayout : TableLayout과 유사하나, 셀의 크기가 동일


TableLayout : 화면의 좌측 상단부터 시작하여 테이블(행[row]와 열[column]) 형태로 개별 셀과 연결하여 뷰를 배치한다. 즉 격자 형태로 뷰들을 나열하게 된다. 

----------------------------------------------------------------------------------------------------

연습문제


XML의 특징


- XML은 표현이 단순하다

- XML은 HTML을 포함하여 다른 언어와 결합이 가능하다

- 유니코드 기반으로 다양한 언어를 표현할 수 있다.

- XML 문법의 오류를 검사하기 쉽다.

- DOM(Document Object Model)이나 SAX(Sample API for XML)으로 쉽게 해석하고 수정할 수 있다.


XML의 이점 


- 버튼의 위치변경 작업과 같이 사소한 작업들은 소스코드를 수정하거나 재컴파일하지 않고 XML 프로그램의 수정만으로 가능

- 서로 다른 스크린 사이즈와 세계 각국의 다양한 문화와 언어를 지원해야 한다. XML은 이러한 요구를 충족

- XML은 데이터 문서와 입/출력 문서로 나뉘고 자신만의 독특한 언어를 태그 형태로 정의할 수 있으며, 문서를 다양한 클래스나 자료 형태로 변경할 수 있다.

- 자바보다 상대적으로 유지보수가 쉽다.

- 가독성이 높다. 즉 UI구조나 디자인을 화면으로 보여줄 수 있다.

- XML문서는 자동화된 이클립스 IDE와 같은 GUI 디자인툴을 사용할 수 있어 XML 생성/편집이 수월


XML문서 기본 구조

ADB, adt, AVD

ADT

이클립스에서 안드로이드를 구동하려면 안드로이드 개발 도구 ADT(Android Development Tools)를 설치해야 한다. 안드로이드 개발 도구는 크게 3가지로 구성


- 안드로이드의 SDK에서 제공하지 않는 안드로이드 버전별 개발 도구

- 이클립스에서 안드로이드를 개발하기 위한 각종 도구(Plugin 형태로 제공)

- 안드로이드 이외의 업체에서 개발한 구글맵이나 엘지 또는 삼성 갤럭시 개발 도구


AVD

안드로이드 응용 프로그램을 만들어 실행하기 위해서 단말기가 필요합니다. 개발자를 위해 제공하는 안드로이드 가상기기가 AVD(Android Virtual Device)입니다.


- 안드로이드용 어플리케이션을 개발하기 위한 통합개발 환경인 이클립스용 플러그인 프로그램으로 이클립스와 안드로이드 SDK를 연동시켜주는 연할을 한다.

- 안드로이드 기반 스마트폰 에뮬레이터를 실행시키기 위한 가상장치로써 안드로이드 어플리케이션을 테스트 할 수 있다.


ADB

ADB(Android Debug Bridge)는 폰에 접속해서 디버깅을 비롯한 여러 기능을 수행할 수 있게 해주는 연결장치

----------------------------------------------------------------------------------------------------

연습문제


아키텍처



리눅스 커널(운영체제의 핵심)

안드로이드가 리눅스를 채용한 주된 이유는 공개 운영체제라는 이유도 있지만 디바이스 드라이버의 지원이 광범위하기 때문

- 백그라운드 스레드, 메모리 관리, 보안, 디바이스 드라이버 등의 저수준 관리 기능을 담당

- 터치 스크린, 카메라, 무선 인터넷, 메모리, 키패드 등 대부분의 모바일 장비에 사용되는 부품의 드라이가 제공


하드웨어 추상레이어(HAL)

추상레이어는 주로 커널을 통해 안드로이드가 제공하는 드라이버를 제어하는 목적으로 사용.

- 표준화된 API를 제공하고 있을 뿐만 아니라 사용자 정의 컴포넌트를 추가할 수 있다.


라이브러리

장비의 전반적인 속도를 결정하는 중요한 요소. 라이브러리 대부분은 C언어로 작성되어 성능이 뛰어나고 충분한 테스트를 거쳐 신뢰성이 보장

- BSD 파생 libc라이브러리

- 2D 그래픽을 위한 서피스 관리자(Suface Manager) 및 SGL

- 3D 그래픽을 위한 OpenGL

- 백터 폰트 출력을 위한 FreeType

- 데이터베이스 지원을 위한 SQLite

- 인터넷 브라우징을 위한 SSL과 크롬, 사파리에 채용된 WebKit


안드로이드 런타임

달빅 가상 머신과 자바 코어 라이브러리로 구성. 자바 가상 머신이 아닌 모바일 환경에 최적화된 달빅(Dalvik) 가상 머신을 사용. 각 프로세스별로 별도의 달빅 가상 머신이 할당되므로 안정성이 높고 메모리 사용량을 줄여 임베디드 환경에 효율적으로 동작하도록 설계. 달빅은 자바 클레스로 바로 실행할 수 없으며 클래스 파일을 dex포맷으로 변환해야만 실행 가능


프레임워크(안드로이드 API)

응용프로그램은 하위의 커널이나 시스템 라이브러리를 직접적으로 호출할 수 없으면 API를 통해서 기능을 요쳥해야 한다. API는 하드웨어 엑세스를 추상화하여 UI 제작에 필요한 위젯을 정의하고 시스템 라이브러리와 통신.

- Activity Manager : 어플리케이션의 생명주기를 관장

- Window Manager : 윈도우의 모양이나 크기 등을 관리

- Content Manager : 어플리케이션이 다른 어플리케이션의 정보나 메시지를 공유하고 작업등을 요청

- View System : 리스트, 텍스트 박스, 버튼 및 다이얼로그 등 제작을 용이하게 하는 UI세트를 제공

- Notification Manager : 콜수신, 메시지수신, 배터리 부족, 시스템 상태 변화, 네트워크 시그널 등 이벤트 발생에 따라 상태바나 토스트와 같은 알람을 출력

- Package Manager : 패키지 설치, 제거 등을 지원하는 관리자

- Telephony Manager : 음성 및 영상통화, MMS/SMS, SIM/USIM관리

- Resource Manager : 애플리케이션에게 파일, 그래픽 등의 자원 할당하고 해제한다.

- Location Manager : 위치정보를 제공하는 기능을 담당한다.


Application (개발자가 만들어야 할 대상)

인터넷 브라우저, 바탕화면, 주소록 등 플랫폼과 함께 설치되는 애플릿과 게임, 유틸리티 등 기본적으로 제공되는 어플리케이션을 말한다.

----------------------------------------------------------------------------------------------------

BSD : Berkley Software Distribution 1997년 미국 캘리포니아 대학교 버클리에서 개발한 유닉스 계열의 컴퓨터 운영 체제.

----------------------------------------------------------------------------------------------------


연습문제 


+ Recent posts