안드로이드는 6계층으로 이루워져 있습니다 .
1.System Apps : Dialer/ Email/ Calendar / Camera
2.Java API Framework : Content Proivder / View System / Managers
3. Navtive C/C++ Libraries
4. Android Runtime
5.Hardware Abstraction Layer(HAL)
6.Linux Kernel
하드웨어와 응용 프로글매 사이에서 인터페이스를 제공하여 하드웨어의 자원 관리 및 사용 하게 하는 것
운영체제는 소프트웨어에 속하며 소프트웨어가 실행되기 위해서는 메모리에 소프트웨어가 올라가야 한다.
하지만 운영체제와 같이 많은 큰 소프트웨어가 모두 메모리에 올라가면 메모리 낭비가 심하게 일어날 것이다. 따라서 OS 는 필요한 부분만 메모리에 올리고 나머지는 필요할 때 메모리를 올린다.
안드로이드 런타임은 스레드 및 메모리 관리를 리눅스 커널 계층에서 진행
(메모리 ,보안 ,전원 , 하드웨어 장치 드라이버)
Java API Framework 하드웨어 기능을 노출하는 표준 인터페이스 제공
(카메라 , 블루투스 오디어 ,센서 등 하드웨어 구성요소 위한 인터페이스 )
프레임워크 API가 기기 하드웨어에 액세스하기 위해 호출을 수행하면 Android 시스템이 해당 하드웨어 구성 요소에 대한 라이브러리 모듈을 HAL 계층에서 로드한다.
C/C++ 로 작성된 네이티브 라이브러리 필요로 하는 네이티브 코드로 기반 빌드
안드로이드는 사앧적으로 작은 용량의 주기억장치와 저전력의 CPU가 탑재된 기기에서 동작하기 때문에 이러한 기기에 최적화된 원시코드로 컴파일 됩니다.
libc 와 libm과 같은 라이브러리 특히 메모리 소비가 적기때문에 안드로이드에 적합합니다. 주로 SQLite , WebKit , OpenGL 같은 안드로이드에 필수적인 네이티브 라이브러리가 들어가 있다.
안드로이드 프레임워크 사용에 필요한 API들을 이 자바 API 프레임워크 계층에서 제공하고 있다.
사용자를 위한 앱으로도 작동하고 개발자가 자신의 앱에서 액세스할 수 있는 주요 기능을 제공하기 위한 용도로 존재한다.
사전에 설치된 앱 또는 System.img(Android OS AOSP Img) 등 여러가지 용도로 직접 빌드할 필요없이 앱을 호출하여 제공할 수 있게 해준다.