Android는 다양한 기기와 폼 펙터에 사용할 수 있도록 Linux 기반의 오픈소스 소프트웨어 스택이다.
(그림 1. Android 소프트웨어 스택)
Android 플랫폼의 기반은 Linux 커널이다. 예를 들어, ART(Android 런타임)는 스레딩 및 하위 수준의 메모리 관리와 같은 기본 기능에 Linux 커널을 사용한다.
HAL(하드웨어 추상화 계층)은 상위 수준의 JAVA API 프레임워크에 기기 하드웨어 기능을 노출하는 표준 인터페이스를 제공한다. HAL은 여러 라이브러리 모듈로 구성되어 있으며, 카메라 또는 블루투스 모듈과 같은 특정 유형의 하드웨어 구성 요소를 위한 인터페이스를 구현한다. 프레임워크 API가 기기 하드웨어에 액세스하기 위해 수행하면 Android 시스템이 해당 하드웨어 구성 요소에 대한 라이브러리 모듈을 로드한다.
Android 버전 5.0(API 레벨21) 이상을 실행하는 기기의 경우, 각 앱이 자체 프로세스 내에서 자체 ART 인스턴스로 실행된다. ART는 DEX 파일을 실행하여 저용량 메모리 기기에서 여러 가상 머신을 실행하도록 작성되었다. DEX파일은 Android용으로 특별히 설계된 바이트코드 형식으로, 최소 메모리 공간에 맞게 최적화되어 있다.
ART의 주요 기능
C 또는 C++ 코드가 필요한 앱을 개발하는 경우에는 Android NDK를 사용하여 네이티브 코드에서 직접 이러한 몇몇 네이티브 플랫폼 라이브러리에 액세스할 수 있다.
Android OS의 전체 기능 세트는 Java 언어로 작성된 API를 통해 엑세스할 수 있다.
Android는 이메일, SMS 메시징, 캘린더, 인터넷 검색, 주소록 등의 주요 앱 세트와 함께 제공된다.
플랫폼에 기본적으로 포함된 앱에는 사용자가 설치하도록 선택하는 앱과 구별되는 특별한 상태가 없다.
참조 : 안드로이드 플랫폼 아키텍처 공식문서