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

AndroidGoogle을 중심으로 개발되는 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.

Google의 인수

Open Handset Alliance

Android 공개

Android 1.0

HTC Dream

초기 Android

디저트 코드명

스마트폰 시장의 성장

태블릿 지원

Android 4.x

Material Design

Android 5.0 이후

현대 Android

Android Open Source Project

AOSP

소스 코드

개발 모델

라이선스

Google의 역할

Open Handset Alliance

AOSP와 상용 Android

Google Mobile Services

AOSP 기반 운영체제

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