Android Overview
안드로이드 개요
- 모바일 디바이스용 Operating System, Middleware, Application들을 한데 묶은 소프트웨어 플랫폼이다.
- 2007년 OHA(Open Handset Alliance)가 개발하고, OHA를 구글이 인수하여 Google Android라 불린다.
- 본 포스트에서는 안드로이드와 관련된 아래 용어들을 설명한다.
- Application (안드로이드 애플리케이션)
- Application Framework (안드로이드 애플리케이션 프레임워크)
- Application Components (안드로이드 애플리케이션 구성요소)
- Android Runtime (안드로이드 런타임)
- Libraries (라이브러리)
- Linux Kernel (리눅스 커널)
Application (안드로이드 애플리케이션, 안드로이드 응용프로그램)
- 안드로이드 기반 디바이스에서 사용할 수 있는 일반적인 응용 프로그램을 지칭한다.
- 웹 브라우저, 달력, 구글맵, 연락처, 게임 등 사용자 입장에서 가장 많이 사용하는 프로그램이 여기에 해당된다.
- Java로 작성된다.
Application Framework (안드로이드 애플리케이션 프레임워크)
- Android API가 존재하는 곳이다.
- 안드로이드 기반 디바이스의 하드웨어에 접근하고자 할 때는
오로지 API를 통해서만 접근이 가능하며 직접 접근은 불가능하다.
Application Components (안드로이드 애플리케이션 구성요소)
Application Components | Description |
Activity | - 사용자가 눈으로 볼 수 있는 화면을 구성하는 요소이다. - 사용자가 버튼을 누르거나, 이미지를 확대하는 등의 동작을 할 수 있다. |
Fragment | - Activity 내에서 독자적으로 동작할 수 있는 화면 구성요소이다. - Reusable하다. - 한 개의 Activity에서 여러 개의 Fragment를 보여주는 것이 가능하다. |
Broadcase Receiver | - 배터리 부족, 언어 설정 변경 등 안드로이드 시스템에서 제공하는 정보를 수신하거나 특정 정보를 수신하는 용도로 사용하는 구성요소이다. - 안드로이드 디바이스에서 Event가 발생하면 Broadcast Signal을 보내는데, Broadcast Receiver는 이 Signal을 받아 처리하는 역할을 수행한다. - 타겟 애플리케이션에서 발생하는 Broadcast Signal을 받기 위해서는 Broadcast Receiver가 설정되어 있어야 하며, Signal을 받는 경우, 애플리케이션에 정의해놓은 작업을 수행한다. - Broadcast Receiver는 AndroidManifest.xml의 <receiver></receiver>에 선언한다. |
Service | - 백그라운드에서 실행되는 구성 요소이다. - 백그라운드에서 주기적으로 데이터를 수신 및 처리하는 용도로 많이 사용된다. |
Content Provider | - 안드로이드 애플리케이션 간의 데이터를 공유하기 위한 표준화된 인터페이스를 제공하는 요소이다. |
Notification | - 안드로이드 기기 상단에 표시되는, 사용자에게 특정 이벤트를 알리는 요소이다. |
Intent | - 안드로이드 구성 요소에 다양한 정보를 전달하기 위한 객체이다. |
Intent Filter | - 다양한 인텐트를 필터링하여 원하는 인텐트만 수신할 수 있도록 하는 구성 요소이다. |
* 안드로이드 4대 구성요소
- Activity, Content Provider, Broadcast Receiver, Service
혹은
Activity, Fragment, Broadcast Receiver, Service
Android Runtime (ART; 안드로이드 런타임)
- 안드로이드에서 사용되던 Dalvik VM의 한계점을 해결하기 위해 구글에서 새로 개발한 런타임(실행환경)이다.
- ART는 애플리케이션의 Bytecode를 Native Instruction으로 변환한 다음 디바이스의 런타임 환경에 의해 실행된다.
- Java Core Library와 Dalvik virtual Machine 또는 ART Runtime으로 구성된다.
- 안드로이드는 Java Syntax에 맞춰 프로그래밍 하지만,
Java Virtual Machine(JVM)을 사용하지 않고, Dalvik Virtual Machine 혹은 ART Runtime을 사용하여 빌드한다.
Dalvik Virtual Machine (Dalvik VM; 달빅 가상 머신)
- Register-Based Virtual Machine이다.
- 적은 메모리 요구 사항에 최적화되어 있다.
- Dalvik VM은 이후 ART VM으로 대체되었다.
Libraries (라이브러리)
- 안드로이드에서 사용되는 여러 시스템 라이브러리들은 Java가 아닌, C로 작성되어 있다.
- 성능이 준수하며 세밀한 조작이 가능하다.
Linux Kernel (리눅스 커널)
- 하드웨어 운영과 관련된 Low-Level 관리기능을 수행한다.
(Memory Management, Device Driver, Security 등)
- 스마트폰의 여러 하드웨어 장치들을 지원한다.
(카메라, 터치스크린, GPS, 자이로스코프 등)
Reference: Android Developers (URL)