Android안드로이드
Android는 Google이 개발한 리눅스 기반 모바일 운영체제다. 스마트폰 시장의 72%를 점유하며, Java/Kotlin으로 앱을 개발한다.
역사
Android Inc. 창업 (2003)
Android는 구글이 아닌 **Android Inc.**에서 시작됐다. 2003년 10월 캘리포니아 팔로알토에서 Andy Rubin, Rich Miner, Nick Sears, Chris White 네 명이 공동 창업했다. 당초 목표는 디지털 카메라용 운영체제였으나, 시장성이 부족하다고 판단해 빠르게 모바일 폰 OS로 방향을 전환했다.
Andy Rubin은 이전에 위험 통지 소프트웨어 스타트업 Danger Inc.에서 T-Mobile Sidekick 기기를 만든 경험이 있었으며, 이를 바탕으로 스마트폰 플랫폼을 구상했다.
Google 인수 (2005)
2005년 7월 구글이 Android Inc.를 약 5,000만 달러에 인수했다. 당시 업계에서는 구글이 왜 소규모 모바일 OS 스타트업을 샀는지 의문을 가졌지만, 이는 모바일 인터넷 시대를 준비한 선제적 투자였다. 인수 후 Andy Rubin은 구글 내 Android 사업부를 이끌었다.
오픈 핸드셋 얼라이언스 & 첫 기기 출시 (2007–2008)
| 시점 | 사건 |
|---|---|
| 2007.01 | Apple iPhone 발표 — 스마트폰 시대 개막 |
| 2007.11 | Google, 오픈 핸드셋 얼라이언스(OHA) 창설 발표. 삼성·HTC·퀄컴·모토로라 등 34개사 참여 |
| 2007.11 | Android 플랫폼 공개 및 AOSP 오픈소스 발표 |
| 2008.09 | 세계 최초 Android 폰 HTC Dream(T-Mobile G1) 출시. 3.2인치 화면, 슬라이드 QWERTY 키보드 |
| 2008.10 | Android Market(현 Google Play) 개설 |
급성장과 세계 1위 (2010–2013)
- •2010년: 삼성 Galaxy S 출시. Android의 대중화를 이끈 기념비적 제품
- •2011년: Android 스마트폰 판매량 세계 1위 달성, iOS 추월
- •2012년: Google이 Motorola Mobility를 125억 달러에 인수 (특허 확보 목적, 2014년 레노보에 재매각)
- •2013년: Andy Rubin 퇴임, Sundar Pichai가 Android 총괄 겸직. Google Play 앱 100만 개 돌파
성숙과 분화 (2014–현재)
- •2014년: Android Wear(스마트워치), Android TV, Android Auto 파생 플랫폼 출시
- •2015년: Sundar Pichai가 Google CEO로 선임
- •2017년: Google Play Protect 도입, 보안 강화
- •2019년: Android 10부터 디저트 코드명 공식 폐기, 숫자 브랜딩으로 전환
- •2021년: 구글, Android 12와 함께 Material You 발표
- •2024년 기준: 전 세계 30억 개 이상 활성 Android 기기, 모바일 OS 점유율 72%
Android와 Google
AOSP (Android Open Source Project)
Android는 AOSP를 통해 핵심 코드를 아파치 라이선스 2.0으로 공개한다. 누구나 코드를 가져가 수정·배포할 수 있으며, 이것이 화웨이·샤오미·아마존(Fire OS) 등이 Android를 기반으로 독자 OS를 만들 수 있는 이유다.
| 구분 | 내용 |
|---|---|
| AOSP | 구글 서비스 없는 순수 오픈소스 Android |
| GMS (Google Mobile Services) | Gmail·Maps·Play 스토어 등 구글 독점 앱 묶음 |
| GMS 인증 | 제조사가 Google Play를 탑재하려면 구글의 호환성 테스트(CTS) 통과 필수 |
중국 화웨이는 미국 제재로 GMS 인증이 취소되어 자체 HarmonyOS + HMS(Huawei Mobile Services)로 전환했다.
Google의 Android 수익 모델
구글은 Android 자체를 무료로 제공하되 구글 검색·광고·Play 스토어 수수료(앱 결제의 15~30%)로 수익을 창출한다.
주요 Android 스마트폰 제조사
삼성 (Samsung)
세계 최대 Android 스마트폰 제조사. 자체 UI인 One UI를 탑재하고, 자사 Exynos와 퀄컴 Snapdragon 칩을 병행 사용한다.
| 라인업 | 특징 |
|---|---|
| Galaxy S 시리즈 | 플래그십. 매년 상반기 출시 |
| Galaxy A 시리즈 | 중급형. 판매량 기준 최다 |
| Galaxy Z 시리즈 | 폴더블 폰 (Z Fold·Z Flip) |
| Galaxy Tab | Android 태블릿 |
Google (Pixel)
Android를 만든 구글이 직접 출시하는 레퍼런스 폰. 순정 Android 경험, 빠른 OS 업데이트(7년 보장), 독자 Tensor 칩, 카메라 소프트웨어 최적화가 강점이다.
| 라인업 | 특징 |
|---|---|
| Pixel 9 Pro | 플래그십, Tensor G4 |
| Pixel 9 | 표준형 |
| Pixel 9 Pro Fold | 폴더블 |
| Pixel 9a | 보급형 |
샤오미 (Xiaomi)
중국 기반의 글로벌 3위 제조사. 가성비로 빠르게 성장했으며 자체 UI HyperOS(구 MIUI)를 탑재한다. Redmi·POCO 서브 브랜드를 운영한다.
OPPO / OnePlus / Realme
모두 동일 모회사 BBK Electronics 산하 브랜드.
| 브랜드 | 포지셔닝 |
|---|---|
| OPPO | 중국·동남아·유럽 중고급형 |
| OnePlus | 글로벌 프리미엄, OxygenOS |
| Realme | 신흥 시장 가성비 |
vivo
BBK 산하 또 다른 브랜드. 중국·인도·동남아 시장 중심. 카메라와 슬림 디자인이 특기이며, 자체 OriginOS를 탑재한다.
소니 (Sony) — Xperia
소니의 Xperia 라인업은 16:9 / 21:9 비율 디스플레이, 뛰어난 오디오 품질, 카메라 전문가 모드로 니치 시장을 공략한다. 순정 Android에 가까운 UI를 유지한다.
모토로라 (Motorola)
1973년 세계 최초 휴대폰을 만든 역사적 기업. 2012년 Google이 인수했다가 2014년 레노보(Lenovo)에 매각됐다. 현재는 레노보 산하에서 보급·중급형에 집중하며 거의 순정 Android를 유지하는 점이 강점이다.
HTC
2008년 세계 최초 Android 폰(HTC Dream)을 출시한 선구자. 2017년 구글이 HTC 스마트폰 사업부 인력과 특허 일부를 11억 달러에 인수해 Pixel 팀으로 흡수했다. 이후 HTC는 소규모로 명맥만 유지 중이다.
화웨이 (Huawei)
2019년까지 세계 2위 스마트폰 제조사였으나, 2019년 미국의 Entity List 제재로 GMS 사용 불가 상태가 됐다. 이후 자체 HarmonyOS와 앱갤러리(AppGallery)를 구축해 독자 생태계를 운영 중이다.
LG
2021년 7월 스마트폰 사업 완전 철수를 선언했다. LG G·V 시리즈로 혁신적 시도(모듈형 G5, 보조 화면 Wing)를 했지만 지속적인 적자를 이기지 못했다.
Nothing
2020년 OnePlus 공동창업자 Carl Pei가 설립한 신생 브랜드. 투명 디자인과 독자 Nothing OS(순정 Android 기반)로 주목받으며 Phone(1), Phone(2), Phone(2a)를 출시했다.
앱 개발
Android 앱을 개발하기 위한 공식 도구·언어·프레임워크를 정리한다.
IDE (통합 개발 환경)
| 도구 | 설명 | 비고 |
|---|---|---|
| Android Studio | Google 공식 Android IDE. IntelliJ 기반, 에뮬레이터·프로파일러 내장 | 공식 권장 |
| IntelliJ IDEA | JetBrains IDE, Android Studio의 모체. 플러그인으로 Android 개발 가능 | |
| VS Code | 경량 에디터. Flutter·React Native 개발 시 많이 사용 | 크로스플랫폼 개발 |
프로그래밍 언어
| 언어 | 설명 |
|---|---|
| Kotlin | Google이 2017년부터 Android 공식 권장 언어. 간결한 문법, Null 안전성, 코루틴 지원 |
| Java | Android 초창기부터 사용된 언어. 방대한 레거시 코드베이스. JVM 기반 |
빌드 시스템
| 도구 | 설명 |
|---|---|
| Gradle | Android의 공식 빌드 자동화 도구. 의존성 관리·APK 빌드·서명·배포까지 처리 |
크로스플랫폼 프레임워크
네이티브 Android 대신 iOS와 동시에 개발할 수 있는 프레임워크다.
| 프레임워크 | 언어 | 특징 |
|---|---|---|
| Flutter | Dart | Google 공식. 자체 렌더링 엔진(Skia/Impeller), 높은 성능 |
| React Native | JavaScript/TypeScript | Meta 개발. 네이티브 컴포넌트 브리지 방식 |
| Kotlin Multiplatform (KMP) | Kotlin | JetBrains. 비즈니스 로직만 공유, UI는 각 플랫폼 네이티브 사용 |
백엔드 & 클라우드 서비스
| 서비스 | 설명 |
|---|---|
| Firebase | Google의 모바일 백엔드 플랫폼. 인증·실시간 DB·FCM 푸시·Crashlytics·원격 설정 제공 |
| Google Play Console | 앱 배포·버전 관리·통계·A/B 테스트·리뷰 관리 |
테스트 도구
| 도구 | 유형 | 설명 |
|---|---|---|
| JUnit 4/5 | 단위 테스트 | 비즈니스 로직·순수 Kotlin/Java 함수 테스트 |
| Espresso | UI 테스트 | 실제 기기·에뮬레이터에서 UI 자동화 테스트 |
| Mockk / Mockito | 목 라이브러리 | 의존성 모킹으로 단위 테스트 격리 |
| Robolectric | 로컬 단위 테스트 | JVM 위에서 Android 프레임워크 시뮬레이션 |
앱 구조
Jetpack Compose (현대 UI)
4대 컴포넌트
| 컴포넌트 | 역할 |
|---|---|
| Activity | 화면 하나를 표현하는 UI 컴포넌트 |
| Service | 백그라운드 작업 (음악 재생) |
| BroadcastReceiver | 시스템 이벤트 수신 |
| ContentProvider | 앱 간 데이터 공유 |
버전 역사 요약
| 버전 | 코드명 | 출시 | API 레벨 | 주요 변화 |
|---|---|---|---|---|
| 1.0 | — | 2008.09 | 1 | 최초 상용 버전 |
| 1.5 | Cupcake | 2009.04 | 3 | 소프트 키보드, 위젯 |
| 2.3 | Gingerbread | 2010.12 | 9–10 | NFC, 가비지 컬렉터 개선 |
| 3.0 | Honeycomb | 2011.02 | 11 | 태블릿 전용, 홀로 UI |
| 4.0 | Ice Cream Sandwich | 2011.10 | 14 | 홀로 UI 폰 통합, Face Unlock |
| 4.1–4.3 | Jelly Bean | 2012–2013 | 16–18 | Project Butter, Google Now |
| 4.4 | KitKat | 2013.10 | 19 | 저사양 최적화, ART 실험 |
| 5.0–5.1 | Lollipop | 2014.11 | 21–22 | Material Design, ART 정식 채택 |
| 6.0 | Marshmallow | 2015.10 | 23 | 런타임 권한, Doze 모드 |
| 7.0–7.1 | Nougat | 2016.08 | 24–25 | 멀티 윈도우, 번들 알림 |
| 8.0–8.1 | Oreo | 2017.08 | 26–27 | 알림 채널, Picture-in-Picture |
| 9 | Pie | 2018.08 | 28 | 적응형 배터리, 제스처 탐색 |
| 10 | — | 2019.09 | 29 | 다크 모드, 폴더블 지원 |
| 11 | — | 2020.09 | 30 | 버블 알림, 일회성 권한 |
| 12 | — | 2021.10 | 31 | Material You, 개인정보 대시보드 |
| 13 | — | 2022.08 | 33 | 언어별 앱 설정, 미디어 권한 세분화 |
| 14 | — | 2023.10 | 34 | 사진 선택 도구, 백그라운드 Activity 제한 |
| 15 | — | 2024.10 | 35 | 앱 아카이빙, 예측형 뒤로가기 정식 |
주요 버전별 특징
Android 5.0 Lollipop (2014) — Material Design
구글이 발표한 통합 디자인 언어 Material Design을 처음 도입한 버전이다.
- •ART(Android Runtime) 정식 채택 — Dalvik VM 대체. AOT 컴파일로 앱 실행 속도 향상
- •Material Design — 그림자·레이어·애니메이션 기반 새 UI 언어
- •알림 잠금화면 — 잠금화면에서 알림 직접 확인 가능
- •멀티유저 (태블릿) — 기기 공유 시 계정별 공간 분리
- •64비트 CPU 지원 시작
Android 6.0 Marshmallow (2015) — 권한 모델 혁신
앱 설치 시 일괄 동의하던 방식에서 런타임 권한(Runtime Permission) 모델로 전환, 개인정보 보호 강화의 기반을 마련했다.
- •런타임 권한 — 위치·카메라·마이크 등 민감 권한을 사용 시점에 요청
- •Doze 모드 — 화면 꺼짐 후 일정 시간 경과 시 백그라운드 작업 일괄 중단 → 배터리 절감
- •App Standby — 장기간 미사용 앱의 네트워크·동기화 제한
- •Fingerprint API — 지문 인증 표준 API 제공
- •Direct Share — 공유 메뉴에서 앱·연락처 바로 노출
Android 7.0 Nougat (2016) — 멀티 윈도우
- •멀티 윈도우(Split-screen) — 두 앱 동시 사용
- •번들 알림(Bundled Notifications) — 같은 앱 알림을 그룹으로 묶어 표시
- •인라인 알림 답장 — 알림창에서 바로 메시지 답장
- •Vulkan API — 저수준 3D 그래픽 API 지원으로 게임 성능 향상
- •JIT 컴파일러 재도입 — 설치 속도와 앱 업데이트 용량 감소
Android 8.0 Oreo (2017) — 백그라운드 제한
- •알림 채널(Notification Channels) — 앱 내 알림을 종류별로 분리 관리, 사용자가 채널 단위로 온/오프
- •Picture-in-Picture — 영상 시청 중 다른 앱 사용 가능
- •Autofill Framework — 비밀번호 관리자 연동 자동완성 표준화
- •백그라운드 실행 제한 — 백그라운드 서비스·브로드캐스트 대폭 제한 → 배터리·메모리 개선
- •Adaptive Icons — 런처별로 아이콘 모양 자동 적용 (원형, 라운드 사각형 등)
Android 10 (2019) — 다크 모드 & 제스처
Android 10부터 디저트 코드명을 공식 폐기하고 숫자 브랜딩으로 전환했다.
- •시스템 전체 다크 모드 — 로 앱에서 감지 가능
- •제스처 탐색 — 뒤로가기·홈·멀티태스킹을 스와이프로 대체 (3버튼 선택 가능)
- •폴더블 기기 공식 지원 — 멀티 재개(Multi-resume) API
- •위치 권한 세분화 — 앱 사용 중에만 허용 옵션 추가
- •Scoped Storage — 앱이 외부 저장소 전체 접근 불가, 미디어·문서 API를 통해서만 접근
Android 12 (2021) — Material You
- •Material You — 배경화면 색상에서 시스템 테마 색상 자동 추출 (Dynamic Color)
- •개인정보 대시보드 — 카메라·마이크·위치에 접근한 앱 타임라인 확인
- •마이크·카메라 빠른 차단 — 빠른 설정에서 전체 차단 토글
- •앱 Splash Screen API — 앱 시작 화면 표준화
- •Haptic 개선 — 더 세밀한 진동 패턴 API
Android 14 (2023) — 개인정보 & 성능
- •사진 선택 도구(Photo Picker) — 갤러리 전체 권한 없이 특정 사진만 공유 가능
- •백그라운드 Activity 시작 제한 강화 — 사용자 동의 없는 앱의 화면 가로채기 차단
- •Credential Manager — 패스키(Passkey)·비밀번호·SSO 통합 인증 API
- •대형 화면 최적화 — 태블릿·폴더블 적응형 레이아웃 가이드라인 강제
- •Ultra HDR 이미지 — 사진 캡처·표시에서 HDR 지원
푸시 알림 (Push Notification)
Android의 푸시 알림은 FCM(Firebase Cloud Messaging)을 통해 서버에서 기기로 메시지를 전달하는 구조다. 앱이 실행 중이지 않아도 알림을 수신할 수 있다.
FCM 아키텍처
- 1.앱 최초 실행 시 FCM SDK가 고유 디바이스 토큰 발급
- 2.앱이 토큰을 백엔드 서버에 등록
- 3.서버가 FCM에 토큰 + 페이로드로 전송 요청
- 4.FCM이 기기로 지속 연결(Long polling) 통해 전달
- 5.
FirebaseMessagingService가 메시지 수신 후 처리
알림 메시지 vs 데이터 메시지
| 구분 | Notification Message | Data Message |
|---|---|---|
| 처리 주체 | 앱 포그라운드 시 앱, 백그라운드 시 시스템 | 항상 앱 코드가 처리 |
| 자동 표시 | 백그라운드에서 자동 표시 | 앱에서 직접 알림 생성 |
| 페이로드 키 | title, body | data 객체 |
| 백그라운드 | 시스템이 알림 표시 | onMessageReceived 미호출 (Android 8+) |
| 주요 용도 | 단순 알림 | 커스텀 처리, 사일런트 푸시 |
실무에서는 두 가지를 혼합(notification + data)해 백그라운드엔 자동 표시하면서 추가 데이터도 전달한다.
알림 채널 (Notification Channel, Android 8.0+)
Android 8.0부터 모든 알림은 반드시 채널에 소속돼야 한다. 채널 단위로 중요도·소리·진동을 설정하며 사용자가 채널별로 직접 끄고 켤 수 있다.
| IMPORTANCE 레벨 | 동작 |
|---|---|
IMPORTANCE_HIGH | 헤드업 알림 + 소리 + 진동 |
IMPORTANCE_DEFAULT | 소리 + 진동, 헤드업 없음 |
IMPORTANCE_LOW | 소리·진동 없음, 상태바 표시 |
IMPORTANCE_MIN | 상태바에도 미표시, 서랍에만 |
FCM 수신 처리
포그라운드 / 백그라운드 처리 비교
| 앱 상태 | Notification Message | Data Message |
|---|---|---|
| 포그라운드 | onMessageReceived 호출 | onMessageReceived 호출 |
| 백그라운드 | 시스템이 자동 알림 표시, 탭 시 intent 전달 | onMessageReceived 미호출 (Android 8+) |
| 종료됨 | 시스템 자동 알림, 탭 시 앱 재시작 + Intent | 전달 불가 |
백그라운드에서 Data Message가 필요한 경우 Notification + Data 혼합 방식을 사용하거나, FCM의
priority: high옵션을 지정해 기기를 깨운다.
알림 권한 (Android 13+)
Android 13(API 33)부터 알림 표시에 POST_NOTIFICATIONS 권한이 필요하다.
로컬 알림 (Local Notification)
서버 없이 앱 내부에서 예약 발송하는 알림이다. AlarmManager 또는 WorkManager와 함께 사용한다.
관련 개념
참고문헌
- •Android 공식 문서: developer.android.com