Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- HDR
- context
- interrupt context
- 프레임버퍼
- 디스크 축소
- sprintf
- 소캣
- fscanf
- 젠킨스
- 스레드
- pagefile.sys
- 멀티프로세싱
- makefile
- 환경 변수
- activities
- 속도저하
- DMA
- jenkins
- fprintf
- intents
- usb2.0
- gparted
- sscanf
- interrupt handler
- context switch
- 문자형 디바이스 파일
- socket
- 디스크립터
- layouts
- memcmp
Archives
- Today
- Total
do{학습}while
AOSP) 구조 파악하기(소프트웨어 스택) 본문
오늘은 AOSP의 구조에 대해서 알아보겠습니다. 그 중에서 안드로이드 공식 문서에서 설명하는 AOSP 소프트웨어 스택에 대해서 알아 보겠습니다.
이번 공부를 통해 전반적인 AOSP 프로젝트의 큰 틀을 머리 속에 넣어보겠습니다.

소프트웨어 스택
위의 그림은 AOSP용 소프트웨어 스택입니다. 위에서부터 차례대로 각각의 레이어를 살펴보겠습니다.
Android apps
- android apps 레이어는 최상위 레이어
- 사용자와 상호작용하는 레이어
- 사용자가 직접 설치 가능
- 주로 java, kotlin으로 작성
- android API만을 사용하여 만든 앱
- android 써드 파드 개발자가 개발하는 앱
Privileged apps
- 일반적인 사용자 앱(android apps)보다 더 높은 수준의 시스템 권한을 접근 가능
- android API, system API을 사용하여 만든 앱
- android 퍼스트 파트 개발자가 개발하는 앱
Device manufacturer apps
- android apps, privileged apps보다 더 높은 권한을 접근 가능
- android API, system API, android framework를 사용하여 만든 앱
- 기기 제조업체(삼성, 화웨이)에서 제공하는 고유한 기능을 제공하는 앱
- 해당 고유한 기능의 일부 코드들은 일반 개발자들에게 공개되지 않을 수 있음
- android 퍼스트 파트 개발자가 개발하는 앱
Android API
- 일반 안드로이드 앱 개발자들에게 일반적으로 제공하는 API
- UI 구성, 데이터 저장 및 관리, 네트워크 통신, 멀티미디어 처리 등 역활
System API
- AOSP(커스텀 ROM 개발)에서 system API 접근이 가능
- 안드로이드의 핵심 기능 또는 시스템 자원(시스템 설정, 하드웨어, 백그라운드 서비스)에 더 깊숙히 접근할 수 있는 API
Android framework API
- 개발자와 시스템이 상호작용 가능, 상호작용을 위한 추상화 계층 제공
- 일정 부분은 일반 안드로이드 개발자, 일정 부분은 OEM 업체들만이 접근 가능
System service
- 다양한 시스템 기능을 제공하는 역활(ActivityManager, PackageManager, WindowManager, NotificationManager 등 대부분 manager라는 이름 규칙을 가지고 있습니다.)
- system_server, SurfaceFlinger, MediaService와 같은 특정 프로세스나 서비스 형태로 존재
- android framework API는 이러한 system service와 상호작용하여 하드웨어 및 시스템 자원을 접근
Android runtime(ART)
- 앱의 바이트코드를 장치의 프로세서에서 실행 가능한 기계어로 변환하는 java 런타임 환경
- 앱의 실행 환경 관리
- 앱의 성능 효율성을 향상시키는 중요한 역활
HAL(Hardware Abstraction Layer)
- 하드웨어와 스프트웨어 사이의 중개 역활을 하는 중요한 요소
- 표준화된 인터페이스 하드웨어의 기능 캡슐화
- 하드웨어의 종속성을 낮추어 독립성을 보장
Native demon & Library
- 하드웨어와 커널에 가까운 레벨에서 동작
- HAL에 의존하지 않고 직접적으로 시스템 자원과 상호작용
Kernel
- kernel 레이어는 소프트웨어 스택의 최하위 계층
- 하드웨어와 소프트웨어 간의 상호작용 관리
참조
https://source.android.com/docs/core/architecture?hl=ko
아키텍처 개요 | Android 오픈소스 프로젝트 | Android Open Source Project
아키텍처 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 오픈 시스템 플랫폼(AOSP)은 공개적으로 사용 가능하고 수정 가능한 Android 소스 코드입니
source.android.com
'AOSP' 카테고리의 다른 글
| AOSP) 구조 파악하기 (AOSP 파일 구조) (0) | 2024.08.18 |
|---|---|
| AOSP) 코드 초기화, 빌드, Cuttlefish 설치 (4) | 2024.08.15 |
| AOSP) 개발 용어 (0) | 2024.08.13 |
| AOSP) 안드로이드 개발 기본 이해 (0) | 2024.08.12 |
| AOSP 공부를 시작하며 (0) | 2024.08.10 |