Android 개요

jihyo·2021년 6월 14일
0

Android

목록 보기
1/17

Android OS의 구조

Android는 Linux 기반의 오픈소스 소프트웨어 스택이다. Android 플랫폼의 구성요소는 아래 그림과 같다.

Android Platform

Linux 커널

Android 플랫폼의 기반은 Linux 커널로, ART(Android 런타임)는 스레딩(Threading) 및 하위 수준의 메모리 관리와 같은 기본 기능에 Linux 커널을 사용한다.

Linux 커널을 사용하면 Android의 주요 보안 기능을 활용하고 널리 알려진 커널용 하드웨어 드라이버를 개발할 수 있다.

HAL (Hardware Abstraction Layer, 하드웨어 추상화 계층)

상위 레벨의 Java API 프레임워크에서 하드웨어 기능을 이용할 수 있게 표준 인터페이스를 제공한다. ex) 카메라, Bluetooth 모듈 등.

프레임워크 API가 기기 하드웨어에 액세스하기 위해 호출을 수행하면 Android 시스템이 해당 하드웨어 구성 요소에 대한 라이브러리 모듈을 로드한다.

ART (Android Runtime)

앱을 실행하는 역할을 한다. DEX 파일을 실행하여 저용량 메모리 기기에서 여러 가상 머신을 실행하도록 작성되었다. Android 5.0 이전에는 Dalvik이 앱을 실행했지만 그 이후 버전은 ART가 대신한다.

Java 소스 코드를 작성하고 컴파일하면 클래스 파일이 만들어진다. 이 파일은 JVM에서 실행되는데 Android는 자바 클래스를 런타임 때 그대로 실행하지 않고 DEX로 컴파일 한다. 이 DEX 파일을 해석해서 실행하는 게 ART이다.

DEX 파일은 Android용으로 특별히 설계된 바이트코드 형식으로, 최소 메모리 공간에 맞게 최적화되었다. Jack과 같은 툴체인을 빌드하고, Java 소스를 Android 플랫폼에서 실행될 수 있는 DEX 바이트코드로 컴파일한다.

네이티브 C/C++ 라이브러리

대부분은 Java 프레임워크로 개발되지만 네이티브 C/C++ 라이브러리를 이용할 때도 있다. 이를 Android NDK(Android Native Development Kit)라고 한다.

Java API 프레임워크

Android 앱을 개발할 때 사용하는 Java API이다. Android 앱을 제작하는 데 필요한 빌딩 블록을 구성한다.

  • 기능이 풍부하며 확장 가능한 뷰 시스템 - 목록, 그리드, 텍스트 상자, 버튼 및 삽입 가능한 웹브라우저를 포함하여 앱의 UI를 빌드하는 데 사용 가능
  • Resource Manager - 현지화된 문자열, 그래픽 및 레이아웃 파일과 같은 코드가 아닌 리소스에 대한 액세스 제공
  • Notification Manager - 모든 앱이 상태 표시줄에 사용자 지정 알림을 표시할 수 있도록 지원
  • Activity Manager - 앱의 수명 주기를 관리하고 공통 탐색 백 스택 제공
    콘텐츠 제공자 - 앱이 주소록 앱과 같은 다른 앱의 데이터에 액세스하거나 자신의 데이터를 공유할 수 있도록 지원

시스템 앱

Android는 이메일, SMS 메시징, 캘린더, 인터넷 검색, 주소록 등의 주요 앱 세트와 함께 제공된다. 플랫폼에 기본적으로 포함된 앱에는 사용자가 설치하도록 선택하는 앱과 구별되는 특별한 상태가 없다. 따라서 타사 앱이 사용자의 기본 웹브라우저, SMS 메시징 또는 기본 키보드가 될 수 있다(단, 시스템의 설정 앱 등 가지 예외가 적용될 수 있음).

시스템 앱은 사용자를 위한 앱으로도 작동하고 개발자가 자신의 앱에서 액세스할 수 있는 주요 기능을 제공하기 위한 용도로도 작동한다. 예를 들어, 앱이 SMS 메시지를 제공하고자 할 경우 해당 기능을 직접 빌드할 필요가 없다. 그 대신, 이미 설치된 SMS 앱을 호출하여 지정한 받는 사람에게 메시지를 제공할 수 있다.

Android 버전

구글은 계속해서 새로운 버전의 Android OS를 내놓고 있다. 시간이 지나면서 새로운 기능이 추가되거나, 기존의 API가 변경/제거되는 등 Android 앱 개발에 영향을 주고 있다. 그렇기 때문에 Android 개발자는 새로운 Android 버전에서의 변경사항을 파악해야 한다.

API 레벨

Android 11.0, 12.0 등은 OS 버전을 의미한다. 또 이 OS 버전마다 API 레벨이 지정되어 있는데 이 API 레벨(SDK 버전)이 있다.

Android 10 부터는 디저트 이름으로 코드명 짓기를 공식적으로 폐기했으나 내부에서는 여전히 사용중이다.

플랫폼 버전코드명API 레벨출시 연도
Android 1.0-12008
Android 1.1Petit Four22009
Android 1.5Cupcake32009
Android 1.6Donut42009
Android 2.0.x ~ 2.1Éclair5~72009
Android 2.2.xFroyo82010
Android 2.3.xGingerbread9~102010
Android 3.xHoneycomb11~132011
Android 4.0.xIce Cream Sandwich14~152011
Android 4.1.x~4.3.xJelly Bean16~182012
Android 4.4.xKitKat19~202013
Android 5.xLollipop21~222014
Android 6.xMarshmallow232015
Android 7.xNougat24~252016
Android 8.xOreo26~272017
Android 9.0Pie282018
Android 10.0Q(Quince Tart)292019
Android 11.0R(Red Velvet Cake)302020
Android 12.0S(Snow Cone)312021
Android 12.1Sv2322022
Android 13.0(Beta)T(Tiramisu)322022

새로운 버전이 나오면서 이전 버전에서 사용하던 API에 변화가 생겼다면 앱이 정상적으로 동작하지 않을 수 있다.

참고자료

플랫폼 아키텍처

0개의 댓글