▶ 안드로이드 시대별 버전 (feat. 디저트)
▶ 안드로이드 운영체제 소개
- 구글에서 개발한 리눅스 기반 오픈 소스 플랫폼으로, 모바일 운영체제 역할
- 구글 플레이 스토어 및 기타 마켓플레이스를 통한 타사 앱 설치를 지원함
- 오늘날 플랫폼은 휴대전화, 태블릿, 웨어러블 기술, TV 및 기타 스마트 디바이스와 같은 다양한 최신 기술의 토대
▶ 안드로이드 운영체제 구조
- Linux 커널
- HAL(하드웨어 추상화 계층)
- Android 런타임
- 네이티브 C/C++ 라이브러리
- Java API 프레임워크
- 시스템 앱
● Linux 커널
- Android 플랫폼의 기반은 리눅스 커널
- 메모리 관리와 같은 기본 기능에 리눅스 커널을 사용
- 리눅스 커널을 사용하면 안드로이드가 주요 보안 기능을 활용 가능
- 리눅스 커널을 사용하면 기기 제조업체가 널리 알려진 커널용 하드웨어 드라이버 개발 가능
- 경량, 저전력, 안정화, 빠른 반응 등의 장점
● HAL(하드웨어 추상화 계층)
- 상위 수준의 Java API 프레임워크에 디바이스 하드웨어 기능을 사용할 수 있도록 하는 표준 인터페이스를 제공
- HAL은 여러 라이브러리 모듈로 구성
- 카메라 모듈, 블루투스 모듈 같은 유형으로 하드웨어 구성 요소의 인터페이스를 구현
- 프레임워크 API가 디바이스 하드웨어에 접근하기 위해 호출을 수행하면 안드로이드 시스템이 해당 하드웨어 구성요소에 대한 라이브러리 모듈을 로드
● Android 런타임
- ART는 DEX 파일을 실행하여 저용량 메모리 디바이스에서 여러 가상머신을 실행하도록 함
- DEX 파일은 안드로이드용으로 특별히 설계된 바이트코드 형식으로, 최소 메모리 공간에 맞게 최적화되어 있음
- Android 버전 5.0(API 레벨21) 이상을 실행하는 디바이스의 경우, 각 앱이 자체 프로세스 내에서 자체ART(Android 런타임) 인스턴스로 실행
- Android 버전 5.0(API 레벨 21) 이전 버전에서는 Dalvik이 Android 런타임으로 사용되었음
- 앱이 ART에서 제대로 실행되면 Dalvik에서도 제대로 실행됨
- 그 반대의 경우 제대로 실행된다는 보장은 없음
● 네이티브 C/C++ 라이브러리
- ART 및 HAL 등의 많은 핵심 Android 시스템 구성 요소와 서비스가 C/C++로 작성된 네이티브 라이브러리를필요로 하는 네이티브 코드 기반으로 빌드되어 있음
- JAVA 프레임워크 API를 사용하여 일부 네이티브 라이브러리의 기능을 앱에서 사용 가능 예를 들어, Android 프레임워크의 Java OpenGL API를 통해 OpenGL ES에 액세스하여 앱에서 2D 및 3D그래픽을 그리고 조작할 수 있는 지원 기능을 추가 가능
● Java API 프레임워크
- 안드로이드 운영체제의 전체 기능 세트는 Java 언어로 작성된 API를 통해 접근 가능
- 이러한 API는 핵심 모듈식 시스템 구성 요소 및 서비스 재사용을 단순화하여 안드로이드 앱 제작에 필요한 빌딩블록 구성함
└ 뷰 시스템, 리소스 매니저, 알림 매니저, 액티비티 매니저, 콘텐츠 제공자
- 개발자는 안드로이드 시스템 앱이 사용하는 것과 동일한 프레임워크 API에 대한 전체 접근 권한을 가지기 때문에, 다양한 애플리케이션 개발 가능
● 시스템 앱
- 이메일, SMS 메시징, 캘린더, 인터넷 검색, 주소록 등의 주요 애플리케이션이 제공됨
- 사용자가 설치한 앱과 구별되는 특별한 상태가 없어서, 타사 앱이 사용자의 기본 웹브라우저, SMS 또는 기본키보드가 될 수 있음
- 단, 시스템의 설정 앱 등은 예외가 적용될 수 있음
- 시스템 앱은 사용자를 위한 앱으로도 작동하고, 개발자가 자신의 앱에서 접근할 수 있는 주요 기능을 제공하기 위한용도로도 작동함
- 예를 들어, 앱이 SMS 메시지를 제공하고자 할 경우 해당 기능을 직접 빌드할 필요가 없음
- 그 대신, 이미 설치된 SMS 앱을 호출하여 지정한 받는 사람에게 메시지를 제공 가능
댓글