안드로이드는 OS, 미들웨어, 중요 응용프로그램을 가지고 있는 휴대 장비의 소프트웨어 모음을 말합니다. 안드로이드 SDK는 자바를 이용하여 안드로이드 플랫폼에서 응용프로그램을 개발하기 위한 툴과 API를 제공한다.

기능
Application framework : 응용프로그램 프래임워크는 재사용과 컴포넌트의 사용을 가능하게 한다.
Dalvik virtual machine : Dalvik 가상머신은 휴대장비를 맞게 최적화해 준다.
Integrated browser : 통합 브라우져는 오픈소스 WebKit 엔진을 기반으로 한다.
Optimized graphics : 2D 그래픽 라이브러리와 OpenGL ES 1.0 스펙을 기반으로 한 3D도 제공한다.
SQLite : 구조화된 자료 저장이 가능한다.
Media support : 공통 소리, 영상, 스틸이미지 포맷 (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF) 지원
GSM Telephony : 하드웨어에 따라
Bluetooth, EDGE, 3G, WiFi : 하드웨어에 따라
Camera, GPS, compass, accelerometer (가속도계) : 하드웨어에 따라
Rich development environment : 장비 에뮬레이터, 디버깅툴, 메모리 성능 검사, Eclipse IDE 플러그인을 포함한다. 안드로이드에는 이메일 클라이언트, SMS 프로그램, 달력, 지도, 브라우저, 주소록 등의 주요 프로그램이 포함되어 있다. 모두 자바가 사용되어졌다.

안드로이드 아키텍쳐

다음은 안드로이드 OS의 주요 컴포넌트를 나타내고 세부 정보가 이어진다.

Applications

안드로이드에는 이메일 클라이언트, SMS 프로그램, 달력, 지도, 브라우저, 주소록 등의 주요 프로그램이 포함되어 있다. 모두 자바가 사용되어졌다.

Application Framework

개발자는 주요 프로그램이 사용하는 같은 프레임워크 API 전체를 사용할 수 있다. 어플리케이션 아키텍쳐는 컴포넌트의 재사용을 간략화 하도록 디자인되었다. 어떠한 프로그램이든 이러한 기능을 사용할 수 있고, 다른 프로그램에서 사용할 수 있다.  

모든 응용프로그램이 아래의 기능을 포함한다.

- View : 응용프로그램을 만드는 향상되고 확장 가능한 View로, 리스트, 그리그, 텍스트 박스, 버튼, 내장 웹브라우저가 있다.
- Content Providers : 응용프로그램이 다른 프로그램의 자료에 접근할 수 있고 공유할 수 있다. (주소록 등)
- Resource Manager : 코드가 아닌 리소스의 접근을 제공한다. (언어, 그래픽, 레이아웃 파일 등)
- Notification Manager : 상태바에 메시지를 보여 줄 수 있다.
- Activity Manager : 응용프로그램의 라이프사이클과 common navigation backstack을 관리한다.

보다 자세한 사항은 Notepad Tutorial을 참고하세요.


Libraries

안드로이드는 다양한 컴포넌트안에 C/C++ 라이브러리를 포함하고 있다. 이런 기능들은 Application Framework을 통해 개발자에게 제공되고 있습니다. 아래에 몇개의 주요 라이브러리가 있다.
- System C Library : 임베디드 리눅스 장비에 맞게 수정되어진 BSD 기반의 기본 C 시스템 라이브러리 (libc)
- Media Libraries : PacketVideo의 OpenCORE이 기반, 많은 형태의 오디오, 비디오, 이미지 포맷을 지원하는 플레이, 레코드를 지원하는 라이브러리 (MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG)
- Surface Manager : 2D, 3D 그래픽 레이어 관련 관리를 한다.
- LibWebCore : 안드로이드 브라우져와 임베디드 웹 뷰에서 사용되는 웹 브라우져 엔진
- SGL : 2D 그래픽 엔진
- 3D libraries
- FreeType : 비트맵 및 벡터 폰트 렌더링
- SQLite : 강력하면서도 가벼운 관계형 DB 엔진

안드로이드 런타임
 
안드로이드의 주요 라이브러리는 자바의 주요 라이브러리가 제공하는 기능들을 대부분 가지고 있다.
모든 안드로이드 프로그램은 Dalvik 가상머신의 하나의 인스턴스와 자체 프로세스에서 동작하게 된다. Dalvik은 장비가 다중 가상머신에서도 효율적으로 동작하도록 씌여졌다. .dex 포맷의 Dalvik 가상머신 실행 파일은 최소의 메모리 사용을 위해 최적화되어 있다. 이 가상머신은 자바컴파일러로 컴파일한 클래스들로 동작하다. 이 클래스들은 dx 툴에 의해 .dex 포맷으로 변환된다.
Dalvik 가상머신은 쓰레드, 저수준 메모리 관리와 같은 리눅스 커널의 기본 기능을 가지고 있다.

리눅스 커널

안드로이드는 보안, 메모리 관리, 프로세스 관리, 네트워크, 드라이버 모델과 같은 리눅스 2.6에 기초를 두고 있다. 커널은 또한 하드웨어와 나머지 소프트웨어의 가상 레이어와 같은 역할을 하고 있다.

+ Recent posts