AOSP 아키텍처

AOSP(Android Open System Platform) 는 공개적으로 사용 가능하고 수정 가능한 Android 소스 코드입니다. 누구나 기기용 AOSP를 다운로드하고 수정할 수 있습니다. AOSP는 Android 모바일 플랫폼의 완전하고 완전한 기능 구현을 제공합니다.

AOSP를 구현하는 기기에는 AOSP 호환성과 Android 호환성의 두 가지 호환성 수준이 있습니다. AOSP 호환 기기호환성 정의 문서(CDD) 의 요구사항 목록을 준수해야 합니다. Android 호환 기기 는 CDD 및 공급업체 소프트웨어 요구사항(VSR)의 요구사항 목록과 공급 업체 테스트 도구 모음(VTS)호환성 테스트 도구 모음(CTS) 과 같은 테스트를 준수해야 합니다. Android 호환성에 대한 자세한 내용은 Android 호환성 프로그램 을 참조하십시오.

AOSP 아키텍처

AOSP용 소프트웨어 스택에는 다음 계층이 포함됩니다.

AOSP 소프트웨어 스택 아키텍처
그림 1. AOSP 소프트웨어 스택 아키텍처
  • 안드로이드 앱. Android SDK 내에서 Android API만을 사용하여 만든 앱입니다. 다른 많은 대안이 있지만 Google Play 스토어는 Android 앱을 찾고 다운로드하는 데 널리 사용됩니다. 경우에 따라 기기 제조업체는 기기의 핵심 기능을 지원하기 위해 Android 앱을 사전 설치하려고 할 수 있습니다. Android 앱 개발에 관심이 있다면 developer.android.com 으로 이동하세요.
  • 권한 있는 앱. Android 및 시스템 API의 조합을 사용하여 만든 앱입니다. 이러한 앱은 장치에 권한 있는 앱으로 사전 설치되어 있어야 합니다.
  • 장치 제조 앱. Android API, 시스템 API 및 Android 프레임워크 구현에 대한 직접 액세스의 조합을 사용하여 만든 앱입니다. 기기 제조업체가 Android 프레임워크 내에서 불안정한 API에 직접 액세스할 수 있기 때문에 이러한 앱은 기기에 사전 설치되어 있어야 하며 기기의 시스템 소프트웨어가 업데이트된 경우에만 업데이트할 수 있습니다.
  • 안드로이드 프레임워크. 앱이 빌드되는 Java 클래스, 인터페이스 및 기타 사전 컴파일된 코드 그룹입니다. 프레임워크의 일부는 Android SDK의 Android API를 사용하여 공개적으로 액세스할 수 있습니다. 프레임워크의 다른 부분은 Android SDK의 시스템 API를 사용하여 OEM만 사용할 수 있습니다. Android 프레임워크 코드는 앱의 프로세스 내에서 실행됩니다.
  • 안드로이드 SDK. Android 프레임워크와 상호작용하는 앱을 만드는 데 사용되는 소프트웨어 개발 키트입니다. Android SDK는 모든 앱에서 사용할 수 있는 Android API와 권한이 있는 앱에서만 사용할 수 있는 시스템 API로 구성됩니다. Android SDK의 Android API에 대한 자세한 내용은 developer.android.com 을 참조하세요. 네이티브 코드를 사용하여 Android 앱의 일부를 작성할 수 있는 Android 네이티브 개발 키트(NDK) 도 있습니다.
  • 시스템 서비스. 시스템 서비스는 system_server , SurfaceFlinger 및 MediaService와 같은 모듈식 집중 구성 요소입니다. Android 프레임워크 API에 의해 노출되는 기능은 시스템 서비스와 통신하여 기본 하드웨어에 액세스합니다.
  • Android 런타임(ART). AOSP에서 제공하는 Java 애플리케이션 런타임 환경입니다. ART는 응용 프로그램의 바이트 코드를 장치의 런타임 환경에서 실행되는 프로세서별 명령으로 변환합니다.
  • HAL(하드웨어 추상화 계층). HAL은 하드웨어 공급업체가 구현할 표준 인터페이스가 있는 추상화 계층입니다. HAL을 사용하면 Android는 하위 수준 드라이버 구현에 대해 독립적일 수 있습니다. HAL을 사용하면 상위 시스템에 영향을 주거나 수정하지 않고도 기능을 구현할 수 있습니다.
  • 자세한 내용은 HAL 개요 를 참조하세요.
  • 기본 데몬 및 라이브러리. 이 계층의 기본 데몬에는 init , healthd , logdstoraged 가 포함됩니다. 이러한 데몬은 커널 또는 기타 인터페이스와 직접 상호 작용하며 사용자 공간 기반 HAL 구현에 의존하지 않습니다. 이 계층의 기본 라이브러리에는 libc , liblog , libutils , libbinderlibselinux 가 포함됩니다. 이러한 기본 라이브러리는 커널 또는 기타 인터페이스와 직접 상호 작용하며 사용자 공간 기반 HAL 구현에 의존하지 않습니다.
  • 핵심. 모든 운영 체제의 핵심 부분인 커널은 장치의 기본 하드웨어와 통신합니다. 가능한 경우 AOSP 커널은 하드웨어 독립적인 모듈과 공급업체별 모듈로 분할됩니다. AOSP 커널 구성요소의 정의를 포함한 설명은 커널 개요 를 참조하세요.

무엇 향후 계획?

  • AOSP를 처음 사용하고 개발을 시작하려면 시작하기 섹션 으로 진행하세요.
  • AOSP의 특정 레이어에 대해 자세히 알아보려면 왼쪽 탐색에서 레이어 이름을 클릭하고 해당 레이어에 대한 개요부터 시작하세요.