차근차근/Android

안드로이드 어플리케이션 기초1 - 안드로이드 아키텍처

예쁜꽃이피었으면 2014. 7. 29. 00:41

http://wikiware-textcube.blogspot.kr/2009/12/4-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-%EA%B8%B0%EC%B4%88.html

 

4.1 안드로이드 아키텍처

 

(1) 안드로이드 어플리케이션의 특징

 

안드로이드 어플리케이션은 다음과 같은 특징을 가지고 있습니다.

 

  • 경계가 없는 어플리케이션 : 어플리케이션은 표준 API(Application Programming Interface)를 통해 핵심(core) 모바일 기능에 접근 가능합니다. 원하는 경우 어플리케이션은 자신의 기능을 다른 어플리케이션에게 공개할 수 있습니다.
  • 평등한 어플리케이션 : 모바일 기기에 있는 어플리케이션은 다이얼러(dialer)나 홈(home) 같은 핵심 구성 요소인 경우에도 대체 또는 확장이 가능합니다.
  • 웹 제어가 쉬운 어플리케이션 : 어플리케이션은 HTML, 자바스크립트, 스타일시트 등을 쉽게 추가할 수 있습니다. 또한 WebView를 통해 웹 컨텐츠를 쉽게 보여줄 수 있습니다.
  • 동시에 실행될 수 있는 어플리케이션 : 어플리케이션을 동시에 여러 개 실행할 수 있는 완벽한 멀티태스킹 환경을 제공합니다. 어플리케이션은 백그라운드에서 실행되면서 필요한 경우 알림 정보를 보낼 수 있습니다.

 

(2) 안드로이드 아키텍처

 

안드로이드는 아래 그림과 같은 아키텍처로 구성되어 있습니다. 아래 그림을 보면 4 개의 계층이 있습니다. 위에서부터 어플리케이션, 어플리케이션 프레임웍, 라이브러리/안드로이드 런타임이 있고, 제일 아래애 리눅스 커널이 있습니다.

 

 

 

 

어플리케이션 계층

 

제일 위의 어플리케이션 계층에는 Home, Contacts, Phone, Browser 같은 내장 어플리케이션 뿐만 아니고, 다른 어플리케이션들이 존재합니다. 내장 어플리케이션은 다음과 같은 것들이 있습니다.

 

  • Alarm Clock
  • Browser
  • Calculator
  • Camcorder
  • Camera
  • Contacts
  • Custom Locale (developer app)
  • Dev Tools (developer app)
  • Dialer
  • Email
  • Gallery
  • Gestures Builder
  • IME for Japanese text input
  • Messaging
  • Music
  • Settings
  • Spare Parts (developer app)

 

어플리케이션 프레임웍 계층

 

그 아래 계층이 어플리케이션 프레임웍 계층입니다. 이 계층에서는 뷰 시스템, 컨텐츠 제공자, 리소스 관리자, 알림 관리자, 액티비티 관리자 등의 프레임웍 API를 제공합니다. 이 API들은 내장 어플리케이션들이 사용하는 것과 동일합니다. 어플리케이션 아키텍처는 컴포넌트 재사용이 쉽게 설계되어 있습니다. 어플리케이션이 자신의 기능을 다른 어플리케이션에 노출(export)할 수 있으며, 이런 기능들은 다른 어플리케이션에서 사용이 가능합니다.

 

  • 뷰 시스템
    윈도 시스템의 컨트롤과 같은 것으로 리스트, 그리드(grid), 텍스트 박스, 버튼, 내장 브라우저 등 풍부하고 확장 가능한 사용자 인터페이스를 제공합니다.
  • 컨텐츠 제공자
    다른 어플리케이션이 데이터에 접근할 수 있도록 지원합니다.
  • 리소스 관리자
    현지화된 문자열, 그래픽, 레이아웃 파일 등과 같은 非코드 리소스에 접근할 수 있도록 합니다.
  • 알림 관리자
    상태 바에 각 어플리케이션의 용도에 따른 알림 정보를 표시할 수 있도록 합니다.
  • 액티비티 관리자
    어플리케이션의 수명을 관리합니다.

 

라이브러리와 안드로이드 런타임 계층

 

그 아래 계층에는 라이브러리와 안드로이드 런타임이 있습니다. 라이브라리 계층에는 표준 C 시스템 라이브러리인 libc와 PacketVideo 사의 OpenCORE에 기반을 둔 미디어(이미지나 음악 및 동영상) 라이브러리, 디스플레이 하부 시스템에 대한 접근을 제어하는 표면(surface) 관리자, 웹 브라우저 엔진인 LibWebCore, 기본 2D 그래픽 엔진인 SGL, OpenGL ES 1.0 API를 구현한 3D 라이브러리, 비트맵이나 벡터 폰트를 그려주는 FreeType, 가볍고 강력한 관계형 DBMS인 SQLite가 있습니다.

 

안드로이드 런타임은 자바 언어로 코어 라이브러리 기능을 사용할 수 있도록 하는 것입니다. 여기서 핵심은 Dalvik VM입니다. 이것은 모바일용으로 최적화된 가상 머신으로 전통적으로 사용되던 Java ME(Mobile Edition)와 같은 것을 사용하지 않고, 모든 어플리케이션이 자신의 프로세스 안에서 동작하고, 자신의 VM 인스턴스를 가지도록 만들어져 있습니다. 따라서 여러 개의 VM이 하나의 장치 안에서 동작이 가능하게 됩니다. 이 계층이 있으므로 해서 개발자는 특정 하드웨어 구현에 신경쓰지 않고 어플리케이션을 개발할 수 있게 된 것입니다.

 

리눅스 커널 계층

 

제일 아래 계층에는 리눅스 커널이 있습니다. 안드로이드 커널은 리눅스 2.6에 기반을 두고 만들어졌습니다. 이 계층에서는 보안, 스레딩, 프로세스, 메모리 관리 등의 하위 수준의 기능을 처리합니다.


반응형