티스토리 뷰

Mobile/Android

[Android] Android Architecture

[Ellie] 2020. 3. 24. 21:04

이번 포스팅에서는 안드로이드 아키텍처가 어떻게 구성되어 있고, 어떤 역할을 하는지 간단하게 정리하고 가려고 한다. 이번 포스팅은 안드로이드 개발자 문서인 플랫폼 아키텍처를 참고했다.

 


 

Android Platform Architecture는 다음과 같이 구성되어 있다.

 

Linux Kernel

  • 안드로이드 플랫폼 기반은 Linux 커널이다. 예를들어 ART에서 threading 또는 하위 수준 메모리 관리와 같은 기본 기능에 Linux 커널을 사용한다.

  • Binder IPC - 프로세스 간 통신

  • Binder Thread - 앱 프로세스에 존재하는 naive thread pool (최대 16개), 다른 프로세스에서 IPC 통신 시 이 thread pool을 통해 접근

 

HAL (Hardware Abstraction Layer)

  • 상위 수준의 Java API framework에 하드웨어 기능을 노출하는 표준 인터페이스를 제공한다.

  • 여러 라이브러리 모듈로 구성되어 있다. ex) Audio, Bluetooth, Camera, Sensors 등

  • 프레임워크 API가 기기 하드웨어에 액세스 하기 위해 호출을 수행하면 안드로이드 시스템에서 해당 모듈을 로드한다.

 

Android Runtime (ART)

 

  • 안드로이드 5.0(API 21) 이상을 실행하는 기기에서는 각 앱이 자체 프로세스 내에서 자체 ART 인스턴스로 실행한다.

  • DEX 라는 안드로이드용 바이트코드 형식으로 최소 메모리 공간에 맞게 최적화 된 파일로 컴파일을 한다.

  • [안드로이드] 컴파일 과정 (Dalvik vs ART)에서 자세한 컴파일 과정을 정리해 두었다.

 

Native C/C++ Libraries (= Core Libraries 라고도 함.)

  • HAL이나 ART와 같은 많은 시스템 구성요소와 서비스가 C나 C++로 작성된 네이티브 코드를 기반으로 빌드 된다.

  • 안드로이드 플랫폼은 Java API를 통해 이러한 일부 네이티브 라이브러리의 기능을 사용할 수 있도록 지원한다.

  • ex) SQLite, OpenGL ES로 2D 및 3D 그래픽을 그리고 조작할 수 있다.

 

Java API Framework

- Android OS의 전체 기능은 Java API를 통해 접근할 수 있다.

  • View System - 앱의 UI 빌드

  • Content Provider -  다른 앱의 데이터에 액세스하거나 자신의 데이터를 공유할 수 있도록 지원

  • Manager

    • Resource Manager - xml이나 drawable 등 코드가 아닌 리소스에 대한 접근 지원

    • Notification Manager - 모든 앱이 상태 표시줄에 사용자 지정 알림을 표시할 수 있도록 지원

    • Activity Manager - 앱의 수명 주기를 관리하고 공통 탐색 Backstack 제공

  • System Apps

    • 설치된 앱이 동작한다.

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함