안드로이드는 Linux
기반의 오픈소스 소프트웨어 스택들로 구성됩니다.
Android
플랫폼 기반은 Linux
커널입니다. 안드로이드 계층 최하단에 위치하며, 시스템전체의 중심역할을 합니다.
Linux
커널 계층에서 담당하는 역할은 다음과 같습니다.
1. 전원관리
2. 보안설정
3. 메모리 관리
4. 하드웨어 관리
5. 네트워크 시스템 관리
하드웨어를 다루기 위한 인터페이스를 추상화시켜놓은 곳이 하드웨어 추상화 계층입니다.
Java API 프레임워크에서 카메라, 블루투스 모듈에 엑세스를 호출하면 HAL계층을 통해 하드웨어 모듈을 로드합니다.
안드로이드 런타임 계층은 어플리케이션 코드를 운영체제가 실행할 수 있도록 컴파일하는 계층입니다.
API래벨 21버전 이전에는 Dalvik
이 안드로이드 런타임이였지만, 21이상부터는 앱이 자체 프로세스 내에서 자체 ART
인스턴스로 실행됩니다.
두 차이점에 대해서는 Dalvik과 ART에 대하여에서 설명하겠습니다.
ART
및 HAL
등의 많은 핵심 Android
구성 요소와 서비스가 C
, C++
로 작성된 네이티브 라이브러리를 필요로 하는 네이티브 코드를 기반으로 빌드됩니다.
네이티브 라이브러리 계층은 SQLite
, WebKit
, OpenGL
안드로이드에 필수적인 라이브러리가 포함되어 있습니다.
Anddroid OS
의 전체 기능은 Java
로 작성된 API
를 활용해 접근이 가능합니다.
이것이 가능한 이유는 기존 네이티브 라이브러리와 안드로이드 런타임 계층이 Java
로 추상화되어 있기 때문입니다.
Content Provider
: 앱끼리의 데이터 공유 지원Activity Manager
: 앱 생명주기 관리 및 백 스택 제공Notification Manager
: 앱이 상태 표시줄에 사용자 지정 알림을 표시할 수 있도록 지원Resource Manager
: 리소스 관리 지원(4대 컴포넌트)등을 제공하고 있습니다.
이메일, 캘린더, 주소록 등의 앱을 제공하는 계층입니다. 사용자를 위한 앱으로 작동하며 이 계층을 이용해 개발을 진행하고 있습니다.