안드로이드란?
안드로이드: 리눅스 커널을 기반으로 구글에서 제작한 모바일 운영체제
안드로이드의 특징
- 안드로이드는 공개 운영체제인 리눅스를 기반으로 한다.
- 안드로이드 앱은 자바나 코틀린 언어를 이용한다. (구글이 코틀린을 언어로 지정. 자바도 사용은 가능함)
- 안드로이드 운영체제의 주요 부분과 라이브러리, 구글에서 만든 앱 등의 코드는 대부분 공개되어 있다.
- 안드로이드 스마트폰은 구글을 제외한 다른 제조업체도 만들 수 있다.
- 안드로이드 앱은 구글스토어, 다른 앱스토어, 직접 배포등의 다양한 방법으로 배포할 수 있다.
- 모바일에 탑재된 기본 앱과 개발자 앱은 같은 방식으로 동작(안드로이드 플랫폼에서는 모든 응용 프로그램은 평등하다는 사상 반영)
안드로이드 운영체제의 구조
- 리눅스 커널(Linux kernel): 안드로이드는 리눅스를 기반으로 만든 오픈소스 소프트웨어이기에 기본적인 동작은 리눅스 위에서 움직인다. (커널은 프로그램과 기계 사이를 잇는 다리 정도로 생각하면 된다. )
- 하드웨어 추상화 레이어(hardware abstraction layer, HAL): 하드웨어의 추상화 계층으로, 상위의 자바 API 프레임워크가 하드웨어의 상세한 정보를 몰라도 쉽게 사용할 수 있게 표준 인터페이스를 제공해준다.
- 안드로이드 런타임(Android runtime): ART라고 하며 앱을 실행하는 역할을 한다. 5.0을 기준으로 Dalvik에서 ART로 바꿨다. 자바 소스 코드를 가상 머신위에서 동작 시킬 때는 클래스 파일을 생성하고 파일을 가상 머신에서 돌리지만 안드로이드에서는 클래스 파일을 DEX파일로 변환해 주어야 한다. 이 DEX파일을 해석하고 실행하는게 ART이다.
- 네이티브 C/C++ 라이브러리: 말 그대로 C/C++라이브러리이다. 안드로이드 NDK(Android Native development kit)이라고도 한다.
- 자바 API 프레임워크: 우리가 앱을 만들면서 사용하는 여러가지 코드가 바로 이 프레임워크에 해당한다.
'안드로이드' 카테고리의 다른 글
안드로이드 로드맵 (0) | 2022.07.15 |
---|---|
chronometer에 대한 궁금증 (0) | 2022.07.13 |
앱을 구성하는 파일을 알아보자 (0) | 2022.01.31 |
안드로이드 앱 개발의 특징 (0) | 2022.01.27 |
안드로이드 프로젝트 생성 (0) | 2022.01.27 |