Hayden's Archive
[Android] 안드로이드 플랫폼의 구조 본문
참고 1 : 한국방송통신대학교 모바일앱프로그래밍 교재( https://press.knou.ac.kr/goods/textBookView.do?condCmdtCode=9788920035999&condLscValue=001&condYr=&condSmst= )
참고 2 : https://developer.android.com/guide/platform?hl=ko
1) 애플리케이션
- 안드로이드는 기본적으로 캘린더, 전화번호부(contact), 구글 맵, 브라우저, 이메일, SMS 프로그램 등 핵심 애플리케이션을 탑재하고 있음
- 여기에 개발자가 작성하는 서드 파티 애플리케이션이 추가되어 애플리케이션 생태계를 구축
2) 애플리케이션 프레임워크
- 애플리케이션들이 사용하는 프레임워크를 제공
- 개발자들이 애플리케이션을 개발하기 위해 필요한 각종 클래스와 메서드 API를 제공하는 역할
- 애플리케이션 작성/구동에 필요한 서비스를 제공
- Core System Service
- 안드로이드 애플리케이션과 직접 상호작용은 하지 않지만 안드로이드 프레임워크가 동작하는데 필수적인 서비스
- Activity Manager, Window Manager, Content Provider, View System, Notification Manager, Package Manager, Resource Manager 등
- Hardware Service
- 저수준 하드웨어 제어를 위한 API를 제공하는 서비스
- Alarm Manager, Connectivity Service, Location Manager, Power Service, Telephony Service, Wifi Service 등
3) 라이브러리
- 안드로이드 시스템의 라이브러리들은 애플리케이션 프레임워크를 통해 개발자들에게 제공됨
- 안드로이드 라이브러리에는 C/C++ 라이브러리와 함께 시스템 C 라이브러리, BIONIC, WebKit, Audio Manager, Media Library, SQLite, FreeType, LibWebCore, Media Framework 등을 포함
4) 안드로이드 런타임
- ART(Android Runtime)는 안드로이드 운영 체제 아래 전 버전인 Dalvik과 같은 가상 머신의 일종
- ART는 Android 5.0(API 레벨 21) 이상에서 실행되는 기기의 기본 런타임 환경이며 안드로이드 플랫폼과 앱의 성능, 유연성을 개선하는 수많은 기능 존재
- ART에서는 달빅 실행 파일 형식과 Dex 바이트 코드 지정을 실행
5) 안드로이드 커널
- 안드로이드 커널은 유닉스나 윈도우즈와 비슷하게 운영체제 대부분 기능이 커널 내에 구현되는 모노리식 커널 형태를 취하고 있음
- 하드웨어와 안드로이드 플랫폼 스택 사이의 추상화 계층 역할을 수행
- 일반적인 커널의 기능 : 메모리 관리, 프로세스 관리, 네트워크 관리, 드라이버 관리