AOSP(Android Open System Platform) 는 공개적으로 사용 가능하고 수정 가능한 Android 소스 코드입니다. 누구나 기기용 AOSP를 다운로드하고 수정할 수 있습니다. AOSP는 Android 모바일 플랫폼의 완전하고 완전한 기능 구현을 제공합니다.
AOSP를 구현하는 기기에는 AOSP 호환성과 Android 호환성의 두 가지 호환성 수준이 있습니다. AOSP 호환 기기 는 호환성 정의 문서(CDD) 의 요구사항 목록을 준수해야 합니다. Android 호환 기기 는 CDD 및 공급업체 소프트웨어 요구사항(VSR)의 요구사항 목록과 공급 업체 테스트 도구 모음(VTS) 및 호환성 테스트 도구 모음(CTS) 과 같은 테스트를 준수해야 합니다. Android 호환성에 대한 자세한 내용은 Android 호환성 프로그램 을 참조하십시오.
AOSP 아키텍처
AOSP용 소프트웨어 스택에는 다음 계층이 포함됩니다.
그림 1. AOSP 소프트웨어 스택 아키텍처
다음은 그림 1에 사용된 용어에 대한 정의 목록입니다.
- 안드로이드 앱
- Android API만을 사용하여 만든 앱입니다. 다른 많은 대안이 있지만 Google Play 스토어는 Android 앱을 찾고 다운로드하는 데 널리 사용됩니다. 경우에 따라 기기 제조업체는 기기의 핵심 기능을 지원하기 위해 Android 앱을 사전 설치하려고 할 수 있습니다. Android 앱 개발에 관심이 있는 경우 developer.android.com 을 참조하세요.
- 권한 있는 앱
- Android 및 시스템 API의 조합을 사용하여 만든 앱입니다. 이러한 앱은 장치에 권한 있는 앱으로 사전 설치되어야 합니다.
- 장치 제조업체 앱
- Android API, 시스템 API 및 Android 프레임워크 구현에 대한 직접 액세스의 조합을 사용하여 만든 앱입니다. 기기 제조업체가 Android 프레임워크 내에서 불안정한 API에 직접 액세스할 수 있기 때문에 이러한 앱은 기기에 사전 설치되어 있어야 하며 기기의 시스템 소프트웨어가 업데이트된 경우에만 업데이트할 수 있습니다.
- 시스템 API
- 시스템 API는 번들 애플리케이션에 포함하기 위해 파트너 및 OEM만 사용할 수 있는 Android API를 나타냅니다. 이러한 API는 소스 코드에서 @SystemApi로 표시됩니다.
- 안드로이드 API
- Android API는 타사 Android 앱 개발자가 공개적으로 사용할 수 있는 API입니다. Android API에 대한 자세한 내용은 Android API 참조 문서 를 참조하십시오.
- 안드로이드 프레임워크
- 앱이 빌드되는 Java 클래스, 인터페이스 및 기타 사전 컴파일된 코드 그룹입니다. 프레임워크의 일부는 Android API를 사용하여 공개적으로 액세스할 수 있습니다. 프레임워크의 다른 부분은 시스템 API를 사용하여 OEM만 사용할 수 있습니다. Android 프레임워크 코드는 앱의 프로세스 내에서 실행됩니다.
- 시스템 서비스
- 시스템 서비스는
system_server
, SurfaceFlinger 및 MediaService와 같은 모듈식 집중 구성 요소입니다. Android 프레임워크 API에 의해 노출되는 기능은 시스템 서비스와 통신하여 기본 하드웨어에 액세스합니다. - Android 런타임(ART)
- AOSP에서 제공하는 Java 런타임 환경입니다. ART는 앱의 바이트코드를 장치의 런타임 환경에서 실행되는 프로세서별 명령으로 변환합니다.
- HAL(하드웨어 추상화 계층)
- HAL은 하드웨어 공급업체가 구현할 표준 인터페이스가 있는 추상화 계층입니다. HAL을 사용하면 Android는 하위 수준 드라이버 구현에 대해 독립적일 수 있습니다. HAL을 사용하면 상위 시스템에 영향을 미치거나 수정하지 않고도 기능을 구현할 수 있습니다. 자세한 내용은 HAL 개요 를 참조하세요.
- 네이티브 데몬 및 라이브러리
이 계층의 기본 데몬에는
init
,healthd
,logd
및storaged
가 포함됩니다. 이러한 데몬은 커널 또는 기타 인터페이스와 직접 상호 작용하며 사용자 공간 기반 HAL 구현에 의존하지 않습니다.이 계층의 기본 라이브러리에는
libc
,liblog
,libutils
,libbinder
및libselinux
가 포함됩니다. 이러한 기본 라이브러리는 커널 또는 기타 인터페이스와 직접 상호 작용하며 사용자 공간 기반 HAL 구현에 의존하지 않습니다.- 핵심
커널은 모든 운영 체제의 중심 부분이며 장치의 기본 하드웨어와 통신합니다. 가능한 경우 AOSP 커널은 하드웨어 독립적인 모듈과 공급업체별 모듈로 분할됩니다. AOSP 커널 구성요소의 정의를 포함한 설명은 커널 개요 를 참조하세요.
무엇 향후 계획?
- AOSP를 처음 사용하고 개발을 시작하려면 시작하기 섹션 을 참조하세요.
- AOSP의 특정 계층에 대해 자세히 알아보려면 왼쪽 탐색에서 섹션 이름을 클릭하고 해당 섹션의 개요부터 시작하세요.