티스토리 뷰
이번 포스팅에서는 안드로이드 아키텍처가 어떻게 구성되어 있고, 어떤 역할을 하는지 간단하게 정리하고 가려고 한다. 이번 포스팅은 안드로이드 개발자 문서인 플랫폼 아키텍처를 참고했다.
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
-
설치된 앱이 동작한다.
-
'Mobile > Android' 카테고리의 다른 글
[Android] Properties 값 Java/xml 파일에서 읽어오기 (0) | 2020.04.08 |
---|---|
[Android] Bitmap Compress Format (JPEG vs PNG vs WEBP) (0) | 2020.03.24 |
[Android] 컴파일 과정 (Dalvik vs ART) (0) | 2020.03.24 |
[Android] Dalvik과 ART의 GC 비교 (0) | 2020.03.24 |
[Android] JVM의 스택 기반 모델 vs DVM의 레지스터 기반 모델 (0) | 2020.03.24 |
- Total
- Today
- Yesterday
- 안드로이드
- SQLD
- pecs
- Python
- DiffUtil
- MSSQL
- SQL
- covariance
- AsyncListDiffer
- RuntimeException
- RecyclerView
- 프로그래머스
- 위험권한
- python3
- Algorithm
- ViewHolder
- 알고리즘
- 파이썬
- Java
- 내용제공자
- kotlin
- GitHub
- Android
- 부스트코스
- SQL Server
- personal access token
- AndroidStudio
- SOCKET
- SQLiteOpenHelper
- gson
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |