Android Platform Architecture

푸른하늘·2022년 10월 23일
0
post-thumbnail

안드로이드는 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

🍎Linux Kernel

Kerenl

하드웨어와 응용 프로글매 사이에서 인터페이스를 제공하여 하드웨어의 자원 관리 및 사용 하게 하는 것

운영체제는 소프트웨어에 속하며 소프트웨어가 실행되기 위해서는 메모리에 소프트웨어가 올라가야 한다.

하지만 운영체제와 같이 많은 큰 소프트웨어가 모두 메모리에 올라가면 메모리 낭비가 심하게 일어날 것이다. 따라서 OS 는 필요한 부분만 메모리에 올리고 나머지는 필요할 때 메모리를 올린다.

Linux Kernel

안드로이드 런타임은 스레드 및 메모리 관리를 리눅스 커널 계층에서 진행
(메모리 ,보안 ,전원 , 하드웨어 장치 드라이버)

🍎 HAL계층

Java API Framework 하드웨어 기능을 노출하는 표준 인터페이스 제공
(카메라 , 블루투스 오디어 ,센서 등 하드웨어 구성요소 위한 인터페이스 )

프레임워크 API가 기기 하드웨어에 액세스하기 위해 호출을 수행하면 Android 시스템이 해당 하드웨어 구성 요소에 대한 라이브러리 모듈을 HAL 계층에서 로드한다.

🍎 Native Libraries계층

C/C++ 로 작성된 네이티브 라이브러리 필요로 하는 네이티브 코드로 기반 빌드

안드로이드는 사앧적으로 작은 용량의 주기억장치와 저전력의 CPU가 탑재된 기기에서 동작하기 때문에 이러한 기기에 최적화된 원시코드로 컴파일 됩니다.

libc 와 libm과 같은 라이브러리 특히 메모리 소비가 적기때문에 안드로이드에 적합합니다. 주로 SQLite , WebKit , OpenGL 같은 안드로이드에 필수적인 네이티브 라이브러리가 들어가 있다.

  • SGL : 2D 그랙픽 담당
  • Open GL ES : 2D/3D 그래픽 담당
  • Free Type : 폰트 렌더링
  • WebKit : 웹 브라우저 엔진
  • libc : 시스템 C 라이브러리
  • SQLite : 모바일을 위한 경량화된 데이터 베이스
  • SSL : Secure Socket Layer 프로토콜

🍎 Java API Framework

안드로이드 프레임워크 사용에 필요한 API들을 이 자바 API 프레임워크 계층에서 제공하고 있다.

  • Resource Manager : 현지화된 문자열, 그래픽 및 레이아웃 파일과 같은 코드가 아닌 리소스에 대한 액세스 제공
  • Notification Manager : 모든 앱이 상태 표시줄에 사용자 지정 알림을 표시할 수 있도록 지원
  • Activity Manager : 앱의 수명 주기를 관리하고 공통 탐색 백 스택 제공
  • 콘텐츠 제공자 : 앱이 주소록 앱과 같은 다른 앱의 데이터에 액세스하거나 자신의 데이터를 공유할 수 있도록 지원

🍎 System Apps

사용자를 위한 앱으로도 작동하고 개발자가 자신의 앱에서 액세스할 수 있는 주요 기능을 제공하기 위한 용도로 존재한다.

사전에 설치된 앱 또는 System.img(Android OS AOSP Img) 등 여러가지 용도로 직접 빌드할 필요없이 앱을 호출하여 제공할 수 있게 해준다.

profile
Developer-Android-CK

0개의 댓글