Android

Android는 Google을 중심으로 개발되는 Linux 배포판이자 모바일 운영체제 플랫폼이다. 스마트폰을 중심으로 시작했지만 현재는 태블릿, 폴더블, TV, 자동차, 웨어러블과 다양한 특수 목적 기기에서도 사용된다. Android의 공개 소스 기반은 Android Open Sourc...

분류Linux 배포판
개발Google, Open Handset Alliance, Android Open Source Project
계열유닉스 계열
기반Linux 커널
최초 공개2008년 9월 23일
최초 버전Android 1.0
주요 런타임Android Runtime
이전 런타임Dalvik
주요 사용자 인터페이스Material Design
패키지 형식APK, Android App Bundle
주요 앱 스토어Google Play
오픈 소스 프로젝트Android Open Source Project
공식 웹사이트android.com
데스크톱 환경제조사마다 다름

Android는 Google을 중심으로 개발되는 Linux 배포판이자 모바일 운영체제 플랫폼이다. 스마트폰을 중심으로 시작했지만 현재는 태블릿, 폴더블, TV, 자동차, 웨어러블과 다양한 특수 목적 기기에서도 사용된다. Android의 공개 소스 기반은 Android Open Source Project(AOSP)이며, 기기 제조사와 개발자는 AOSP를 이용해 자체 Android 운영체제 변형을 만들 수 있다.[1]

Android는 일반적인 데스크톱 Linux 배포판과 상당히 다른 사용자 공간을 구성한다. 하부에는 Linux 커널이 존재하지만 그 위에는 Android용 네이티브 데몬과 라이브러리, HAL, ART, 시스템 서비스, Android Framework와 애플리케이션 계층이 배치된다. AOSP는 이 전체 구성을 하나의 완전한 Android 플랫폼 구현으로 제공한다.[2]

Android 애플리케이션은 일반적인 Linux 데스크톱 프로그램과 달리 Android Framework가 제공하는 구성 요소와 생명 주기 모델을 중심으로 동작한다. 대표적인 구성 요소에는 Activity, Service, BroadcastReceiver와 ContentProvider가 있으며, 애플리케이션은 각각 별도의 Linux 사용자 ID와 프로세스를 부여받는 샌드박스 모델을 기본적으로 사용한다.

Android 호환 기기는 Compatibility Definition Document(CDD)의 요구사항을 따르고 Compatibility Test Suite(CTS) 등의 테스트를 통과해야 한다. AOSP 자체를 수정하여 사용하는 것은 자유롭지만 Android 생태계와의 공식적인 호환성은 이러한 별도의 호환성 체계를 통해 관리된다.[3]

역사

Android Inc.

Android의 기원은 Google 내부 프로젝트가 아니라 2003년에 설립된 신생 기업 Android Inc.에 있다. Andy Rubin, Rich Miner, Nick Sears와 Chris White가 창업에 참여했으며, 이들은 서로 다른 제조사와 통신사가 사용할 수 있는 공통 모바일 소프트웨어 기반을 구상했다. 초기에는 연결형 디지털 카메라용 소프트웨어를 검토했으나 시장 규모와 성장 가능성을 고려해 휴대전화용 운영체제 개발로 중심을 옮겼다.[4]

당시 휴대전화 소프트웨어는 제조사와 기종마다 강하게 분절되어 있었고, 새로운 단말기를 만들 때마다 운영체제와 응용 프로그램 환경을 상당 부분 다시 구성해야 했다. Android Inc.가 지향한 것은 특정 단말기 하나에 묶인 제품이 아니라 Linux 커널 위에 통신, 멀티미디어, 사용자 인터페이스와 응용 프로그램 실행 환경을 함께 제공하는 재사용 가능한 플랫폼이었다. 이 방향은 이후 Android가 다수 제조사에 공급되는 개방형 플랫폼으로 성장하는 토대가 되었다.[5]

Google의 인수

Google은 2005년 Android Inc.를 인수했고 Andy Rubin을 비롯한 핵심 인력은 Google에 합류했다. 인수 금액은 공개되지 않았으나, 이후 Google은 Android 팀을 유지하면서 Linux 커널 기반의 모바일 운영체제와 애플리케이션 플랫폼을 개발했다.[6]

Google은 단일 제조사의 휴대전화만을 직접 만드는 방식보다 운영체제, 미들웨어, 개발 도구와 기본 응용 프로그램을 하나의 공통 플랫폼으로 제공하고 여러 단말기 제조사·반도체 기업·이동통신사가 이를 채택하는 방식을 선택했다. 플랫폼을 무료로 공급하고 소스 코드를 공개하면서 Google 서비스와 모바일 웹의 사용 범위를 넓히는 구조였으며, 이는 폐쇄적인 단말기별 소프트웨어 체계와 다른 Android의 핵심 전략이 되었다.

Open Handset Alliance

2007년 11월 5일 Google은 단말기 제조사, 반도체 기업, 소프트웨어 기업과 이동통신사가 참여한 Open Handset Alliance(OHA)의 출범을 발표했다. 창립 당시에는 Google, HTC, T-Mobile, Motorola, Qualcomm, Samsung Electronics, LG Electronics 등 34개 기업이 참여했다. OHA는 모바일 기기와 서비스의 개발 비용을 낮추고 상호 협력할 수 있는 개방형 생태계를 구축하는 것을 목표로 삼았다.[7]

같은 발표에서 Android는 운영체제만을 뜻하는 것이 아니라 Linux 커널, 미들웨어, 사용자 인터페이스와 핵심 응용 프로그램을 포함하는 완전한 모바일 소프트웨어 스택으로 소개되었다. OHA의 구성은 Android를 Google 단독 제품에 머무르게 하지 않고, 하드웨어 설계부터 이동통신망 배포와 응용 프로그램 개발까지 여러 산업 주체가 함께 상용화하는 플랫폼으로 출발시키는 역할을 했다.

Android 공개

OHA는 2007년 11월 12일 초기 Android SDK를 공개했다. 이 SDK에는 Linux 2.6 커널 기반 플랫폼, 시스템 라이브러리, 멀티미디어 기능, 사용자 인터페이스 도구와 단말기 에뮬레이터가 포함되었으며, 개발자는 실제 상용 기기가 출시되기 전부터 Android 애플리케이션을 만들고 플랫폼에 의견을 제시할 수 있었다.[8]

초기 SDK 공개와 운영체제 소스 코드 공개는 별개의 단계였다. Google은 첫 상용 단말기 출시 시기에 맞춰 2008년 10월 21일 Android 플랫폼의 소스 코드를 공개하고 Android Open Source Project를 정식으로 출범시켰다. 공개 범위에는 커널 변경 사항, 네이티브 라이브러리, 런타임, 프레임워크와 핵심 응용 프로그램 등 완전한 플랫폼을 빌드하는 데 필요한 코드가 포함되었다.[9]

Android 1.0

2008년 9월 23일 Android 1.0 SDK가 정식 공개되었다. Android 1.0은 Activity, Service, Intent와 ContentProvider를 중심으로 하는 애플리케이션 모델, 상태 표시줄 알림, 웹 브라우저, 연락처·전화·메시지 기능, 지도와 위치 기능, 카메라와 미디어 API, Android Market을 통한 응용 프로그램 배포 기반을 갖췄다.[10]

초기 Android는 애플리케이션이 서로의 기능을 Intent로 호출하고, 시스템이 응용 프로그램의 구성 요소와 생명 주기를 관리하는 구조를 전면에 내세웠다. 또한 Java 언어와 Android 전용 Dalvik 가상 머신을 활용하면서도 하부 시스템에는 Linux 커널과 C·C++ 기반 네이티브 구성 요소를 사용했다. 이 계층 구조는 이후 런타임이 ART로 교체되고 프레임워크가 크게 확장된 뒤에도 Android의 기본 구조로 이어졌다.

HTC Dream

HTC가 제조하고 T-Mobile이 T-Mobile G1이라는 이름으로 판매한 HTC Dream은 최초의 상용 Android 스마트폰이다. 2008년 9월에 공개되어 같은 해 10월 미국 시장에 출시되었으며, Android 1.0을 탑재했다. 슬라이드식 물리 QWERTY 키보드, 터치스크린, 트랙볼, 3G와 Wi-Fi를 갖추고 Google 계정·Gmail·지도·검색 등 Google 서비스와 긴밀하게 연동되었다.[11]

HTC Dream의 출시는 Android가 에뮬레이터와 개발 키트에 머무르지 않고 실제 이동통신망에서 동작하는 상용 플랫폼이 되었음을 보여줬다. 또한 운영체제 개발사, 단말기 제조사와 이동통신사가 역할을 나누는 Android의 배포 모델을 처음 구현했으며, 이후 Motorola, Samsung Electronics, Sony Ericsson, LG Electronics와 여러 제조사가 Android 기기를 내놓는 출발점이 되었다.

초기 Android

Android는 초기 몇 년 동안 짧은 간격으로 기능과 API를 확장했다. 2009년 Android 1.5 Cupcake는 화면 키보드, 홈 화면 위젯, 동영상 녹화와 업로드 기능을 도입했고, Android 1.6 Donut은 다양한 화면 크기와 CDMA 지원을 강화했다. Android 2.0·2.1 Eclair는 계정 동기화, 지도와 브라우저, 카메라 기능을 확장했으며, Android 2.2 Froyo는 JIT 컴파일러와 테더링, Android 2.3 Gingerbread는 사용자 인터페이스와 전원 관리, NFC와 게임·멀티미디어 API를 개선했다.[12]

이 시기 Android Market의 성장과 함께 제3자 애플리케이션 생태계가 빠르게 형성되었다. 제조사는 AOSP에 자체 사용자 인터페이스와 서비스를 추가했고, 이동통신사는 판매 지역과 망 환경에 맞춘 구성을 적용했다. 그 결과 같은 Android 버전을 기반으로 하더라도 기기마다 화면 구성, 기본 앱과 업데이트 일정이 달라지는 Android 특유의 다양성과 파편화가 동시에 나타났다.

디저트 코드명

초기 Android 버전에는 알파벳 순서의 디저트 코드명이 사용되었다. Android 1.5의 Cupcake를 시작으로 Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice Cream Sandwich, Jelly Bean, KitKat, Lollipop, Marshmallow, Nougat, Oreo와 Pie가 공개 제품명에 함께 표시되었다. 코드명은 개발 중인 버전을 구분하는 내부 명칭이면서 일반 사용자가 버전을 기억하기 쉽게 만드는 브랜드 요소로 자리 잡았다.

Google은 2019년 Android Q의 정식 명칭을 Android 10으로 정하면서 공개 버전 이름을 숫자 중심으로 통일했다. 지역과 언어에 따라 디저트 이름이 다르게 인식될 수 있고, 알파벳 순서가 모든 사용자에게 명확하지 않다는 점이 변경 이유로 제시되었다. 다만 내부 개발 코드명에는 이후에도 디저트 이름이 계속 사용된다.[13]

스마트폰 시장의 성장

Android는 특정 제조사의 단일 제품군이 아니라 여러 제조사와 가격대에 적용될 수 있다는 점을 바탕으로 빠르게 확산되었다. Motorola Droid, Samsung Galaxy와 HTC의 여러 제품군이 주요 이동통신사를 통해 출시되었고, Google은 Nexus 프로그램을 통해 새 Android 버전과 플랫폼 기준을 보여주는 참조 기기를 제공했다. 고급 스마트폰뿐 아니라 중저가 단말기에도 적용되면서 Android는 다양한 지역과 통신 환경을 포괄하는 대규모 생태계를 형성했다.

이 과정에서 제조사별 사용자 인터페이스, 선탑재 앱과 하드웨어 기능이 경쟁 요소가 되었고, Android Market과 뒤이은 Google Play는 하나의 응용 프로그램 배포 생태계를 여러 제조사의 기기에 제공했다. 반면 제조사·칩셋·이동통신사별 수정과 검증 절차로 인해 운영체제 업데이트가 늦어지는 문제가 커졌으며, Google은 이후 호환성 프로그램, Project Treble과 Project Mainline 등을 통해 플랫폼 공통부와 기기별 구현을 분리하는 방향으로 구조를 개편했다.

태블릿 지원

2011년 공개된 Android 3.0 Honeycomb은 태블릿을 위해 설계된 별도 계열이었다. 큰 화면에 맞춘 시스템 바와 액션 바, 다중 패널 레이아웃, 개선된 멀티태스킹 화면, 태블릿용 위젯과 하드웨어 가속 렌더링을 도입했다. Honeycomb은 스마트폰용 Android 2.x와 별도로 발전했기 때문에 한동안 폼 팩터에 따라 플랫폼이 나뉘었다.[14]

같은 해 공개된 Android 4.0 Ice Cream Sandwich는 Honeycomb의 대화면 사용자 인터페이스와 스마트폰 계열을 다시 하나의 플랫폼으로 통합했다. 이후 Android는 화면 크기와 밀도에 따라 리소스와 레이아웃을 바꾸는 적응형 구조를 강화했고, 태블릿뿐 아니라 TV, 자동차, 웨어러블, 폴더블과 대화면 기기로 적용 범위를 넓혔다.[15]

Android 4.x

Android 4.0 Ice Cream Sandwich는 스마트폰과 태블릿의 사용자 경험을 통합하고 Holo 디자인, 화면 내 시스템 버튼, 향상된 알림과 멀티태스킹 화면, 얼굴 인식 잠금 해제 등을 도입했다. Android 4.1부터 4.3까지의 Jelly Bean 계열은 Project Butter를 통해 화면 갱신과 터치 반응을 개선했으며, 확장형 알림, Google Now, 다중 사용자와 제한된 프로필 등의 기능을 추가했다.[16]

Android 4.4 KitKat은 비교적 적은 메모리를 가진 기기에서도 최신 Android를 구동할 수 있도록 메모리 사용량을 줄이고 시스템 구성 요소를 최적화했다. 몰입형 전체 화면 모드, 인쇄 프레임워크, 저장소 접근 프레임워크와 새로운 통신 API도 이 시기에 도입되었다. Android 4.x는 초기 Android의 빠른 기능 추가 단계를 지나 스마트폰·태블릿 공통 플랫폼과 일관된 애플리케이션 API를 정착시킨 시기로 평가된다.[17]

Material Design

Google은 2014년 Android 5.0 Lollipop과 함께 Material Design을 Android의 새로운 시각 언어로 도입했다. Material Design은 종이와 잉크의 물리적 비유를 디지털 인터페이스에 적용해 표면의 층, 그림자, 깊이, 움직임과 전환을 일관된 규칙으로 표현했다. Android 시스템 앱과 제3자 앱뿐 아니라 Google의 웹 서비스와 다른 플랫폼 제품에도 같은 디자인 원칙을 적용하는 것이 목표였다.

Lollipop은 Material Design 외에도 ART를 기본 런타임으로 채택하고, 64비트 아키텍처 지원, 새로운 알림과 잠금 화면, 문서 중심 최근 작업 화면, 배터리 절약 기능과 SELinux 강제 적용을 확대했다. 이 변화는 Android의 외형만 바꾼 것이 아니라 런타임, 보안과 그래픽 스택을 함께 현대화한 대규모 전환이었다.[18]

Android 5.0 이후

Android 6.0 Marshmallow는 설치 시 모든 권한을 한꺼번에 허용하던 방식에서 벗어나 사용 중 필요한 위험 권한을 요청하는 런타임 권한 모델과 Doze를 도입했다. Android 7.x Nougat는 화면 분할, 알림 직접 답장과 Vulkan API를 추가했고, Android 8.x Oreo는 백그라운드 실행 제한, 알림 채널, Picture-in-Picture와 Project Treble을 도입했다. Treble은 Android 프레임워크와 하드웨어 공급업체 구현 사이에 안정된 인터페이스를 두어 새 플랫폼 버전을 기기에 이식하는 부담을 줄이려는 구조 개편이었다.[19]

Android 9와 Android 10 이후에는 제스처 탐색, 적응형 배터리, 백그라운드 위치 제한, Scoped Storage와 개인정보 보호 제어가 강화되었다. Android 10에서 시작된 Project Mainline은 미디어, 네트워크, 런타임과 보안 관련 일부 시스템 구성 요소를 모듈화하여 전체 운영체제 OTA와 별도로 업데이트할 수 있게 했다. Android는 단일 이미지 전체를 교체하는 운영체제에서 커널, 공급업체 구현, 시스템 모듈과 앱을 서로 다른 주기로 갱신하는 계층형 플랫폼으로 발전했다.[20]

현대 Android

Android 12는 배경화면 색상을 시스템 색상표에 반영하는 동적 색상과 큰 형태, 애니메이션을 중심으로 한 Material You를 도입했다. 이후 Android는 개인정보 대시보드, 마이크·카메라 사용 표시, 알림 권한, 사진 선택기와 세분화된 미디어 접근 등 사용자 데이터 제어를 강화했다. 동시에 폴더블, 태블릿과 데스크톱형 대화면에서 동일한 애플리케이션이 자연스럽게 재배치되도록 창 크기 클래스와 적응형 레이아웃 체계를 확장했다.[21]

2026년 6월 16일 공개된 Android 17은 지원 대상 Pixel 기기에 배포되고 소스 코드가 AOSP에 공개되었다. Android 17은 휴대전화의 고정된 세로 화면만을 전제로 하지 않는 적응형 우선 개발 기준을 확대하고, 대화면·폴더블·자동차와 확장 현실 기기까지 이어지는 애플리케이션 경험, 개인정보 보호, 보안, 미디어·카메라와 성능 개선에 초점을 맞췄다.[22]

Android Open Source Project

AOSP

Android Open Source Project(AOSP)는 Android 플랫폼의 공개 소스 구현과 개발 프로젝트를 가리킨다. AOSP에는 Linux 커널 관련 구성, 부팅 시스템, 네이티브 데몬과 라이브러리, Hardware Abstraction Layer 인터페이스, Android Runtime, 애플리케이션 프레임워크, 시스템 서비스와 기본 응용 프로그램이 포함된다. 소스 코드를 빌드하면 에뮬레이터나 지원되는 참조 기기에서 실행할 수 있는 완전한 Android 시스템 이미지를 만들 수 있다.[23]

AOSP는 특정 제조사의 상용 펌웨어를 그대로 공개한 저장소가 아니라, 여러 기기와 제품이 공통으로 사용하는 플랫폼 기반이다. 기기 제조사는 AOSP 위에 칩셋과 장치 드라이버, vendor 구현, 제품별 설정, 사용자 인터페이스, 자체 서비스와 응용 프로그램을 결합해 실제 제품을 만든다. 따라서 모든 Android 기기는 공통된 플랫폼 구조를 공유하지만, 설치된 시스템 전체가 AOSP 코드만으로 이루어지는 것은 아니다.

소스 코드

AOSP 소스는 android.googlesource.com에 분산된 다수의 Git 저장소로 관리된다. 전체 플랫폼은 여러 저장소의 정확한 조합을 기록하는 manifest로 구성되며, Google이 개발한 Repo 도구가 manifest에 지정된 저장소를 내려받고 동기화한다. 개발자는 릴리스 브랜치와 태그를 선택해 특정 Android 버전을 재현하거나 android-latest-release manifest를 사용해 최신 AOSP 릴리스 계열을 받을 수 있다.[24]

AOSP는 범용 참조 기기와 가상 기기인 Cuttlefish에서 실행할 수 있는 빌드 구성을 제공한다. 실제 상용 기기에서 구동하려면 해당 하드웨어의 커널 구성, 장치 트리, HAL 구현과 펌웨어가 추가로 필요하며, GPU·모뎀·카메라와 무선 통신 장치 등에 필요한 일부 바이너리는 제조사 또는 부품 공급자의 별도 라이선스로 배포될 수 있다. 이 때문에 AOSP 소스를 확보하는 것과 특정 기기에서 모든 기능이 동작하는 시스템을 만드는 것은 서로 다른 단계다.

개발 모델

AOSP는 Google이 전체 플랫폼의 방향과 릴리스를 조정하면서 외부 개발자와 기업의 기여를 받아들이는 Google 주도 오픈 소스 프로젝트다. 소스 관리에는 Git과 Repo를 사용하며, 변경 제안은 Gerrit 코드 리뷰 시스템에 업로드한다. 기여자는 Contributor License Agreement에 동의해야 하고, 각 구성 요소의 관리자가 설계 적합성, 호환성, 테스트 결과와 코드 품질을 검토한 뒤 변경을 병합한다.[25]

모든 차기 기능이 처음부터 공개 저장소에서 개발되는 것은 아니다. Google은 제품 전략과 출시 일정에 따라 일부 작업을 내부 브랜치에서 진행한 뒤 안정된 플랫폼 릴리스 시점에 AOSP로 공개할 수 있다. 반대로 Linux 커널, LLVM, Rust와 여러 외부 프로젝트에서 가져온 변경은 가능한 경우 원 프로젝트에 먼저 기여하고 AOSP에 반영하는 방식을 권장한다. AOSP는 공개된 소스 코드, 공개 이슈 추적과 외부 패치를 제공하지만 최종 제품 로드맵과 통합 권한은 Google이 관리하는 혼합형 개발 모델을 갖는다.[26]

라이선스

AOSP의 대부분은 Apache License 2.0으로 배포된다. 이 라이선스는 소스 코드 수정과 상용 제품 사용을 허용하며, 제조사가 자체 변경 사항 전체를 공개하지 않고도 Android 기반 제품을 만들 수 있게 한다. Google은 모바일 플랫폼 채택과 다양한 제품 구현을 촉진하기 위해 사용자 공간의 다수 구성 요소에 Apache License 2.0을 적용한다.[27]

플랫폼 전체가 하나의 라이선스만 사용하는 것은 아니다. Linux 커널과 그 파생 변경 사항은 GNU General Public License version 2의 적용을 받고, 일부 시스템 라이브러리와 외부 프로젝트에는 BSD, MIT, Apache 또는 각 원 프로젝트의 라이선스가 적용된다. 또한 AOSP 저장소에 포함되지 않는 펌웨어, 하드웨어 드라이버, Google 애플리케이션과 서비스는 별도의 독점 라이선스를 가질 수 있다. Android 명칭과 로고 같은 상표 사용도 소스 코드 라이선스와 별도로 관리된다.

Google의 역할

Google은 AOSP의 핵심 관리자이자 Android 플랫폼 릴리스의 통합 주체다. 플랫폼 로드맵을 정하고 공통 프레임워크, 런타임, 보안 모델, 호환성 요구사항과 참조 구현을 개발하며, 각 저장소의 코드 소유자와 리뷰어를 통해 변경을 승인한다. 새 Android 버전은 Google 내부 개발, 외부 오픈 소스 구성 요소와 협력사의 변경을 하나의 릴리스 브랜치로 통합한 뒤 AOSP에 공개된다.

Google은 AOSP 소스뿐 아니라 Compatibility Definition Document, Compatibility Test Suite와 Vendor Test Suite를 관리해 서로 다른 제조사의 구현이 Android 애플리케이션과 API를 일관되게 지원하도록 한다. AOSP를 자유롭게 수정하는 권리와 공식적인 Android 호환성은 구분되며, 호환 Android 기기가 되려면 해당 버전의 CDD 요구사항을 충족하고 CTS 등 관련 테스트를 통과해야 한다.[28]

Open Handset Alliance

Open Handset Alliance는 Android의 상용화를 위해 단말기 제조사, 이동통신사, 반도체 기업과 소프트웨어 기업을 묶은 산업 연합이다. 2007년 34개 창립 회원으로 출범한 뒤 회원 수를 늘렸으며, Android 기기의 제조·판매, 칩셋과 통신 기술 지원, 응용 프로그램과 서비스 개발을 각 회원사가 분담하는 생태계 형성에 기여했다.[29]

OHA와 AOSP는 서로 관련되지만 같은 조직은 아니다. OHA는 Android를 채택하고 상용화하는 기업 연합의 성격을 가지며, AOSP는 실제 플랫폼 소스와 개발 절차를 관리하는 프로젝트다. 현재 AOSP의 기술적 관리와 릴리스 통합은 Google이 주도하고, 제조사와 부품 공급자는 AOSP 코드 기여와 개별 기기 구현, 호환성 시험을 통해 생태계에 참여한다.

AOSP와 상용 Android

AOSP를 빌드하면 기본 Android 시스템을 만들 수 있지만, 소비자에게 판매되는 상용 Android 기기에는 일반적으로 추가 구성 요소가 결합된다. 칩셋 공급자의 Board Support Package와 펌웨어, 제조사의 HAL·커널 모듈·카메라 처리·전원 관리, 제품별 사용자 인터페이스와 기본 앱, 이동통신사 설정, DRM과 인증 키 등이 대표적이다. 이러한 구성 요소 중 일부는 공개 소스이고 일부는 독점 소프트웨어다.

상용 Android라는 표현은 AOSP에 특정한 하나의 패키지를 더한 단일 제품을 뜻하지 않는다. 제조사는 AOSP를 기반으로 자체 제품을 만들고, CDD와 CTS를 통해 Android 애플리케이션 호환성을 확보하며, 필요하면 Google과 별도 계약을 맺어 Google Mobile Services를 탑재한다. 반대로 AOSP를 기반으로 하면서 Google 서비스 없이 배포하거나 Android 호환성 인증을 목표로 하지 않는 운영체제도 만들 수 있다.

Google Mobile Services

Google Mobile Services(GMS)는 Google이 기기 제조사에 별도로 라이선스하는 독점 애플리케이션과 API의 집합이다. 일반적으로 Google Play Store, Google Play services, Google 검색, Chrome, YouTube, 지도와 Gmail 등의 Google 앱 및 서비스가 포함되며, 지역과 기기 종류에 따라 실제 구성은 달라질 수 있다. GMS는 AOSP의 일부가 아니므로 AOSP 소스만을 빌드해도 자동으로 포함되지 않는다.[30]

GMS 탑재를 원하는 제조사는 Android 호환성 요구사항을 충족하고 Google과 라이선스 계약을 맺어야 한다. Google Play services는 위치, 인증, 푸시 메시지와 보안 기능처럼 많은 애플리케이션이 사용하는 API를 운영체제 릴리스와 독립적으로 업데이트한다. 이 구조 때문에 Android 애플리케이션 가운데 일부는 AOSP API만으로 동작하지만, 일부는 GMS가 없는 기기에서 대체 구현이나 별도 구성이 필요하다.

Android 기반 배포판

Android 기반 배포판은 AOSP를 직접 수정한 배포판, 다른 Android 배포판을 다시 포크한 계열, 제조사 제품에 탑재되는 상용 펌웨어와 PC·TV·웨어러블·자동차·확장 현실·임베디드 기기용 파생 플랫폼으로 나뉜다. 아래 계보는 독립된 이름과 공개 시스템 이미지·소스 저장소 또는 상용 제품 펌웨어를 가진 배포판을 대상으로 한다. 개별 기기만을 위한 개인 빌드, 단순 테마·런처, stock ROM 재포장, GSI 재패키징과 Waydroid 같은 Android 애플리케이션 호환 계층은 포함하지 않는다. 화살표는 공식적인 명칭 변경이나 직접적인 후속 관계가 확인되는 경우에만 사용하며, 같은 행에서 점으로 구분한 배포판은 공통 기반이나 같은 조직의 제품군을 나타낼 뿐 직접 포크 관계를 뜻하지 않을 수 있다.

초기 커뮤니티 계보에서는 JesusFreke의 HTC Dream용 ROM을 바탕으로 CyanogenMod가 시작되었고, CyanogenMod가 중단된 뒤 LineageOS가 후속 프로젝트로 이어졌다.[31] GrapheneOS의 공개 프로젝트는 CopperheadOS와 임시 명칭 Android Hardening을 거쳐 현재 이름으로 이어졌으며, /e/OS와 iodéOS는 LineageOS를 기반으로 한다.[32][33][34] Android-x86는 AOSP 릴리스에 대응하는 x86 브랜치를 구축해 여러 PC용 배포판의 기반이 되었다.[35] 역사적 커뮤니티 배포판에는 공개 manifest와 소스 저장소가 확인되는 프로젝트도 함께 포함했다.[36]

Android 기반 배포판
원류AOSPAndroid Inc. → Android · AOSP
Google 제품군Android Go · Android TV · Google TV · Android Wear → Wear OS · Android Automotive OS · Brillo → Android Things · Glass OS · Android XR
Cyanogen·Lineage 계통커뮤니티JesusFreke ROM → CyanogenMod → LineageOS
상용 분기Cyanogen OS
직접·혼합 기반LineageOS for microG · crDroid · Replicant · MoKee OpenSource · Resurrection Remix OS · AICP · ViperOS · eelo → /e/OS · iodéOS · DivestOS · Evolution X · AxionOS · RisingOS · Project Matrixx · LMODroid
초기 독립 커뮤니티2009–2014AOKP · Paranoid Android · OmniROM · SlimRoms · CarbonROM · Dirty Unicorns · LiquidSmooth · PAC-man ROM · CodeAuroraROM · VanirAOSP · XenonHD · BeanStalk · Mahdi-ROM · ChameleonOS · Team EOS · Gummy ROM · NamelessROM · Euphoria OS · BrokenOS · SOKP
Ground Zero 계통GZOSP → ValidusOS · TeslaOS · TipsyOS
독립 커뮤니티 A–CCustom ROMAIMROM · Ancient OS · AOSDP · AOSGP · AOSiP · CypherOS · AospExtended · AospLime ROM · AquariOS · ArrowOS · Atomic OS · BaikalOS · BananaDroid · BlissRoms · BootleggersROM · Cardinal-AOSP · CerberusOS · CesiumOS · CherishOS · CipherOS · Citrus-CAF · ColtOS · Corvus OS · Cosmic-OS
독립 커뮤니티 D–LCustom ROMDarkNess reDefined · DerpFest · dotOS · EmotionOS · FireHound · Flamingo OS · Flash ROM · GlazeOS · Havoc-OS · Hexagon ROM · IncipientOS · Infinity-X · Ion OS · LeanOS · LegendROM · Liquid-Dark · LiquidRemix · Lunaris AOSP
독립 커뮤니티 M–RCustom ROMMiku UI · MistOS · MSM Xtended · Nameless-AOSP · Neoteric OS · Nitrogen OS · Noise Project · NothingRom · NucleaRom · Nusantara Project · OctaviOS · OrionOS · PalladiumOS · PixelDust · PixelExperience · PixelOS · PixysOS · PAOSP · POSP · Project 404 · Project Arcana · Project Awaken · Project Blaze · Project Elixir · Project Fluid · ProjectNewWorld · Project Sakura · Project Zephyrus · ProtonAOSP · Pure Nexus · ReloadedOS · RenouveauOS · RevengeOS · riceDroid
독립 커뮤니티 S–ZCustom ROMSAOSP · ScrewdAOSP · ShapeShiftOS · SigmaDroid OS · SkyLineUI · SomethingOS · SparkOS · StagOS · StatiXOS · SuperiorOS · Syberia Project · Team OctOS · TequilaOS · The XPerience Project · ToxycOS · VoltageOS · XOSP · YAAP
보안·프라이버시강화형CopperheadOS → Android Hardening → GrapheneOS · CalyxOS · RattlesnakeOS · AphyOS · Volla OS · Fairphone Open OS · SHIFTOS-L
상용·특수 보안PrivatOS → Silent OS · Sirin OS · Bittium Secure OS · BraxOS
Android-x86 계통PCAndroid-x86
Android-x86 파생CM-x86 → LineageOS-x86 · Bliss OS · Remix OS · Phoenix OS · PrimeOS · OpenThos · Console OS
범용·산업·컨버전스Android-IA · Maru OS · emteria.OS · Raspberry Vanilla
Samsung 계통OEMTouchWiz → Samsung Experience → One UI
Xiaomi 계통OEMMIUI → Xiaomi HyperOS
OPPO·OnePlus·realme 계통OEMColorOS · HydrogenOS · OxygenOS · realme UI
vivo·iQOO 계통OEMFuntouch OS · iQOO UI · OriginOS
Huawei·Honor 계통OEMEmotion UI → EMUI · Magic UI → MagicOS · HarmonyOS 2–4
Motorola·Lenovo 계통OEMMOTOBLUR · My UX → Hello UI · Vibe UI · ZUI
HTC·LG·Sony 계통OEMHTC Sense · Optimus UI → LG UX · Timescape UI · Sony Xperia UI
ASUS·ZTE·nubia 계통OEMZenUI · ROG UI · MiFavor → MyOS · nubia UI · RedMagic OS
Meizu·Nothing·Transsion 계통OEMFlyme · Nothing OS · HiOS · XOS · itel OS
기타 제조사 계통OEMAmigo OS · CoolUI · EUI · Smartisan OS · Nextbit OS · Acer Liquid UI · Nokia X software platform · Fairphone OS · SHIFTOS-G
중국 독립 포크지역OPhone · Tapas OS · LeWa OS · Baidu Yi / Baidu Cloud OS · Aliyun OS → YunOS → AliOS · TencentOS · 360 OS · Freeme OS · Niu OS
인도 계통Indus OS · Pragati OS · BharOS
Amazon·TV·게임 계통기기군Fire OS · NOOK OS · OUYA OS · GameStick OS · NVIDIA SHIELD Experience · Whale OS
XR·공간 컴퓨팅 계통XROculus OS → Meta Horizon OS · PICO OS · VIVE Wave · Lumin OS · YodaOS-Master
기타 특수 목적특수Kali NetHunter · Peloton OS · MocorDroid

Linux 기반 구조

Linux 커널

Android Common Kernel

커널 변경 사항

Generic Kernel Image

커널 모듈

장치 드라이버

프로세스 관리

메모리 관리

네트워크

전원 관리

보안 기능

시스템 아키텍처

전체 구조

커널

네이티브 데몬과 라이브러리

Hardware Abstraction Layer

Android Runtime

시스템 서비스

Android Framework

시스템 애플리케이션

사용자 애플리케이션

Hardware Abstraction Layer

HAL

HAL 인터페이스

AIDL HAL

HIDL

Binderized HAL

Vendor 구현

하드웨어 드라이버와의 연결

네이티브 사용자 공간

Bionic

init

logd

healthd

storaged

libbinder

libutils

liblog

libselinux

Binder

프로세스 간 통신

Binder 드라이버

Binder 객체

Binder 스레드

AIDL

시스템 서비스

애플리케이션과 Binder

Android Runtime

Dalvik

ART

DEX

OAT

Zygote

AOT 컴파일

JIT 컴파일

가비지 컬렉션

프로파일 기반 최적화

Android Framework

Framework API

System API

Activity Manager

Package Manager

Window Manager

Resource Manager

Notification Manager

Location Manager

Connectivity Service

Telephony

Media Framework

애플리케이션 모델

애플리케이션 프로세스

사용자 ID

샌드박스

Activity

Service

BroadcastReceiver

ContentProvider

Intent

애플리케이션 생명 주기

백그라운드 실행

AndroidManifest.xml

애플리케이션 정보

구성 요소 선언

권한

Intent Filter

SDK 버전

하드웨어 요구사항

소프트웨어 요구사항

사용자 인터페이스

View 시스템

XML 레이아웃

Activity

Fragment

Jetpack Compose

Material Design

Material You

다크 테마

화면 밀도

다양한 화면 크기

폴더블

멀티 윈도

애플리케이션 개발

Android SDK

Android Studio

Gradle

Kotlin

Java

C

C++

Android NDK

Jetpack

Android Emulator

ADB

디버깅

테스트

애플리케이션 패키지

APK

Android App Bundle

DEX

리소스

네이티브 라이브러리

애플리케이션 서명

설치

업데이트

애플리케이션 배포

Android Market

Google Play

서드파티 앱 스토어

사이드로딩

기업용 배포

시스템 애플리케이션

특권 애플리케이션

보안

Linux 사용자 기반 격리

애플리케이션 샌드박스

권한 모델

런타임 권한

SELinux

Seccomp

Verified Boot

Android Verified Boot

파일 기반 암호화

애플리케이션 서명

Keystore

보안 업데이트

보안 패치 수준

저장소

내부 저장소

외부 저장소

앱별 저장소

Scoped Storage

SQLite

SharedPreferences

Storage Access Framework

파일 기반 암호화

파일 시스템과 파티션

boot

init_boot

system

system_ext

product

vendor

odm

data

metadata

recovery

동적 파티션

부팅 과정

Boot ROM

부트로더

Android Verified Boot

Linux 커널

init

Zygote

system_server

SystemUI

Launcher

그래픽

Surface

SurfaceFlinger

WindowManager

Hardware Composer

Skia

OpenGL ES

Vulkan

EGL

그래픽 드라이버

디스플레이 합성

오디오와 멀티미디어

AudioFlinger

Audio HAL

MediaCodec

Codec2

카메라

Camera HAL

영상

오디오

미디어 코덱

DRM

네트워크와 통신

TCP/IP

Wi-Fi

이동통신

Bluetooth

NFC

UWB

USB

VPN

테더링

위성 통신

전원과 자원 관리

프로세스 상태

프로세스 우선순위

Low Memory Killer

lmkd

Doze

App Standby

JobScheduler

백그라운드 제한

배터리 관리

시스템 업데이트

OTA

A/B 업데이트

Virtual A/B

동적 파티션

Project Mainline

APEX

Google Play 시스템 업데이트

보안 업데이트

Project Treble

도입 배경

시스템과 Vendor의 분리

Vendor Interface

VINTF

HAL 안정성

Vendor Test Suite

Android 업데이트에 미친 영향

기기 호환성

Android Compatibility Program

Compatibility Definition Document

Compatibility Test Suite

Vendor Test Suite

API 호환성

Android 호환 기기

AOSP 호환 기기

Google Mobile Services 인증

기기 제조사

Google

Samsung Electronics

Xiaomi

OPPO

vivo

Motorola

Sony

기타 제조사

Android 기기 종류

스마트폰

태블릿

폴더블

Android TV

Google TV

Android Automotive

Android Auto

Wear OS

임베디드와 특수 목적 기기

버전

Android 1.x

Android 2.x

Android 3.x

Android 4.x

Android 5.x

Android 6.x

Android 7.x

Android 8.x

Android 9

Android 10

Android 11

Android 12

Android 13

Android 14

Android 15

Android 16

Android 17

파생 운영체제

LineageOS

GrapheneOS

/e/OS

CalyxOS

Fire OS

기타 AOSP 기반 운영체제

Android와 Linux

Linux 커널의 사용

일반 Linux 배포판과의 차이

사용자 공간

Bionic과 glibc

Android 애플리케이션 환경

Linux 애플리케이션 호환성

Android의 Linux 생태계 내 위치

생태계

Google Play

Google Mobile Services

Android SDK

Android 개발자 생태계

OEM

이동통신사

애플리케이션 생태계

영향

스마트폰 시장

모바일 애플리케이션 생태계

Linux 보급

오픈 소스 생태계

임베디드 기기

모바일 하드웨어 산업

관련 문서

Linux

Linux Kernel

Android Open Source Project

Google

Open Handset Alliance

Android Runtime

Google Play

  1. Android Open Source Project: AOSP overview ↩
  2. Android Open Source Project: Architecture overview ↩
  3. Android Open Source Project: Android Compatibility program overview ↩
  4. Chet Haase: Androids — The Team That Built the Android Operating System ↩
  5. Wired: Andy Rubin Unleashed Android on the World ↩
  6. Reuters: Google exec says Android was “best deal ever” ↩
  7. Open Handset Alliance: Industry Leaders Announce Open Platform for Mobile Devices ↩
  8. Open Handset Alliance: Open Handset Alliance Releases Android SDK ↩
  9. Android Developers Blog: Android is now Open Source ↩
  10. Android Developers Blog: Announcing the Android 1.0 SDK, release 1 ↩
  11. Wired: T-Mobile Store Opens Doors to G1 Phone ↩
  12. Android Developers Blog: Android 1.5 is here ↩
  13. Google: Evolving the Android brand ↩
  14. Android Developers: Android 3.0 Platform Highlights ↩
  15. Android Developers: Android 4.0 Platform Highlights ↩
  16. Android Developers: Jelly Bean ↩
  17. Android Developers: Android 4.4 APIs ↩
  18. Android Developers: Android 5.0 APIs ↩
  19. Android Developers Blog: Here comes Treble ↩
  20. Android Open Source Project: Modular system components ↩
  21. Google: Android 12 is live in AOSP ↩
  22. Android Developers Blog: Android 17 is here ↩
  23. Android Open Source Project: AOSP overview ↩
  24. Android Open Source Project: Download the Android source ↩
  25. Android Open Source Project: Submit code changes ↩
  26. Android Open Source Project: AOSP frequently asked questions ↩
  27. Android Open Source Project: Licenses ↩
  28. Android Open Source Project: Android compatibility program overview ↩
  29. Open Handset Alliance: Alliance FAQ ↩
  30. Android: Google Mobile Services ↩
  31. Wired: Out in the Open — The Place Where Android Thrives Outside of Google’s Control ↩
  32. GrapheneOS: CopperheadOS is now GrapheneOS ↩
  33. /e/OS documentation: About /e/OS ↩
  34. iodé: New Update for iodéOS ↩
  35. Android-x86: Get Source ↩
  36. Awesome Android OS List ↩