Android/Android&Kernel2009/09/22 18:57


Android Architecture 주요 구성 요소

  • Applications(JAVA)
안드로이드의 기본 핵심 Application은 Java 프로그래밍 언어를 사용하여 작성되었다.

  • Application Framework(JAVA)
API 기반의 인터페이스를 제공
Application은 자신의 기능을 외부 Application에게 제공할 수 있으며, 다른 Application이 제공하는 기능을 사용할 수도 있다.
View - Application을 만드는 데 사용될 수 있는 풍부하고 확장가능함
Content Provider - Application이 다른 APP의 데이터에 접근하는 것을 가능하게 하거나, 자신의 데이터를 공유하는 것을 가능하게 해줌
Resource Manager - non-code(localized strings, graphics, layout files) 리소스에 대한 접근을 제공
Notification Manager - 모든 APP이 status bar에 커스텀 알림 메시지를 표시하는 것이 가능
Activity Manager - APP의 생명주기를 관리 및 APP 네비게이션 back stack 관리

  • Libraries(C)
안드로이드 시스템의 다양한 컴포넌트를 사용하는 C/C++ 라이브러리 포함
Application Framework를 통해 개발자에게 제공
System C Library - 임베디드 리눅스 기반의 디바이스에 적합하도록 BSD에서 파생된 lib
Media Library - OpenCORE 기반의 Library 제공
Surface Manager - display subsystem에 대한 접근 관리 및 다양한 APP에서 사용되어지는 그래픽 레이어들을 단일하게 관리
LibWebCore - 안드로이드 브라우저와 임베디드 가능한 웹 뷰 두가지 모두 제공하는 웹 브라우저 엔진
SGL - 2D 그래픽 엔진
3D Libraries - OpenGL ES 1.0을 기반으로 구현, 하드웨어 3D 가속기나 최적화된 3D 소프트웨어 래스터라이저를 사용
FreeType - 비트 맵 & 벡터 폰트 렌더링
SQLite - 모든 APP에서 이용할 수 있는 관계형 데이터베이스 엔진

  • Android Runtime
Java 프로그래밍 언어의 핵심 라이브러리에서 사용가능한 대부분의 기능을 포함
모든 안드로이드 APP은 자신의 프로세스에서 실행되고, 달빅 가상머신에 대한 자신의 인스턴스를 가지고 있다.
달빅 머신은 하나의 디바이스에서 다양한 가상머신이 효과적으로 실행될 수 있도록 만들어짐
최소 메모리를 사용하도록 최적화된 .dex 포맷의 파일을 실행
레지스터 기반, Java 언어가 컴파일된 후, dx라는 툴을 통해 .dex 포맷으로 변환된 클래스를 실행
달빅 가상머신은 쓰레딩과 저수준 메모리 관리 같은 기능에 대해서는 리눅스 커널에 의존

  • Linux Kernel
안드로이드는 보안, 메모리 관리, 프로세스 관리, 네트워크 스택, 드라이버 모델 같은 core system services에 대해 리눅스 버전 2.6에 의존
리눅스 커널은 하드웨어와 소프트웨어 스택 사이의 추상화 layer 역할

'Android > Android&Kernel' 카테고리의 다른 글

4th Korea Android Conference - Android Binder -  (0) 2009/10/24
Building on Mac OSX 10.6 Snow Leopard  (0) 2009/10/08
Android Architecture  (0) 2009/09/22
Android 구성요소  (0) 2009/09/22
What is Android?  (0) 2009/09/22
Donut(Android 1.6) Platform Highlights  (1) 2009/09/16
Posted by mirwing