do{학습}while

AOSP) 구조 파악하기(소프트웨어 스택) 본문

AOSP

AOSP) 구조 파악하기(소프트웨어 스택)

하이오야이 2024. 8. 14. 13:47

오늘은 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