안드로이드 소프트웨어 스택

Posted in 모바일 // Posted at 2010. 7. 13. 10:43
728x90
글 작성일: 2010/01/21 , 옮긴 날: 2010/07/13

안드로이드 OS의 내부 계층 구조를 안드로이드 소프트웨어 스택이라 합니다
개발을 함에 있어 그 기반이 되는 플랫폼의 내부 아키텍처를 잘 알고 있어야 하겠죠

닷넷과 자바등 모든 개발 플랫폼들은 그들만의 내부 아키텍처를 가지고 있습니다
이에 대한 이해가 개발을 첫 걸음이라 하겠네요

아래는 구글 doc에서 그대로 가져온 내용입니다
원문: http://docs.google.com/Doc?docid=0AfEORS6TAXtKZGQ5ZnN6MjhfMjNmOWo3cjZoYw&hl=ko&pli=1
-----------------------------------------------------------------------------------------

What is Android?
Android는 OS, 미들웨어, 중요 어플리케이션을 포함하는 모바일 플랫폼. Android 상에서 작동하는 어플리케이션을 위한 툴과 API를 Android SDK가 제공하고 JAVA 언어를 사용함
 
Android Architecture (software stack)
 

특징
  • Application framework: 소프트웨어 컴포넌트의 재사용과 재배치를 가능하게 함
  • Dalvik virtual machine: 모바일 장치에 최적화된 자바 가상 머신. 구글에서 Sun과의 지적재산권
    문제를 피하기 위해 개발
  • Integrated browser: WebKit 엔진 기반의 브라우저 제공
  • Optimized graphics: SGL기반의 2D, OpenGL ES 1.0기반의 3D 그래픽 라이브러리
  • SQLite: 모바일 장치를 위한 데이터 저장 장치
  • Media support: 오디오, 비디오, 이미지 포맷 지원
  • GSM Telephony (hardware dependent)
  • Bluetooth, EDGE, 3G, and WiFi (hardware dependent)
  • Camera, GPS, compass, and accelerometer (hardware dependent)
  • Rich development environment: 장치 에뮬레이터, 디버깅 툴, 메모리, 성능 프로파일링,
    이클립스 플러그인 제공
 
Applications
Android는 email 클라이언트, SMS program, calendar, maps, browser, contacts 등의 핵심
어플리케이션을 포함하고 있다.
 
Application Framwork
  • 컴포넌트의 재사용을 간단하게 하기 위한 역할. 어플리케이션이 자신의 기능을 공개하면 다른
    어플리케이션에서 해당 기능을 사용할 수 있게 함
  • Content Providers: 다른 어플리케이션의 데이터에 접근할 수 있는 방법을 제공
  • Resource Manager: 스트링, 그래픽, layout 파일등 코드가 아닌 파일에 접근할 수 있게 함
  • Notification Manager: 어플리케이션이 사용자에게 경고를 할 수 있게 함
  • Activity Manager: 어플리케이션의 lifecycle을 관리하고 어플리케이션의 네이게이션을 backstack을 관리
 
Libraries
  • C/C++ 기반의 라이브러리를 포함하고 있고, 이는 application framework를 통해 제공
  • System C library: 리눅스 기반의 임베디드 장치에 특화된 표준 C 라이브러리
  • Media Libraries: PacketVideo's OpenCORE기반의 비디오, 오디오, 이미지 라이브러리
  • Surface Manager: 디스플레이 접근 관리 라이브러리
  • LibWebCore: 웹 브라우저 엔진
  • SGL: 2D 그래픽 엔진
  • 3D libraries: OpenGL ES 1.0 API기반의 라이브러리, 3D 하드웨어 가속또는 최적화된 3D
    소프트웨어 래스터라이저를 사용
  • FreeType: 비트맵과 벡터 폰트 렌더링 엔진
  • SQLite: 가볍고 강력한 관계형 데이터베이스 엔진
 
Android Runtime
Android는 Java 언어의 핵심 라이브러리를 포함하고 있음
모든 어플리케이션은 각각의 프로세스를 가지고 Dalvik 가상 머신에서 동작
Dalvik 가상 머신은 리눅스 커널에 의존함
 
Linux Kernel
Linux 2.6 버젼을 기반으로 보안, 메모리 관리, 프로세스 관리, 네트워크 스택과 드라이버를 제공
또한 커널은 하드웨어와 나머지 소프트웨어 스택 사이의 추상화된 레이어의 역할을 함
 
Reference