
Android 플랫폼 기초는 Linux 커널, 예시로 Android 런타임(ART)는 스레딩 및 하위 수준의 메모리 관리와 같은 기본 기능에 Linux 커널을 사용
Linux 커널을 사용해 Android에서 주요 보안 기능 활용 가능 및 기기 제조업체가 잘 알려진 커널용 하드웨어 드라이버를 개발 가능
Android에서의 주요 보안 기능
https://source.android.com/docs/security/overview/kernel-security?hl=ko
하드웨어 추상화 계층(HAL)은 상위 수준의 Java API 프레임워크에 기기 하드웨어 기능을 노출하는 표준 인터페이스를 제공
HAL은 여러 라이브러리 모듈로 구성되며, 각 모듈은 카메라 또는 블루투스 모듈과 같은 특정 유형의 하드웨어 구성요소를 위한 인터페이스를 구현
프레임워크 API가 기기 하드웨어에 액세스하기 위해 호출을 수행하면 Android 시스템이 해당 하드웨어 구성요소에 대한 라이브러리 모듈을 로드
Android 버전 5.0(API 수준 21) 이상을 실행하는 기기의 경우, 각 앱이 자체 프로세스 내에서 자체 Android 런타임(ART) 인스턴스로 실행
DEX 형식 파일을 실행하여 저용량 메모리 기기에서 여러 가상 머신을 실행
ART의 주요 기능
Android 버전 5.0(API 수준 21) 이전 버전에서는 Dalvik이 Android 런타임
Android에는 Java API 프레임워크가 사용하는 몇 가지 자바 8 언어 기능을 포함하여 대부분의 자바 프로그래밍 언어 기능을 제공하는 일련의 핵심 런타임 라이브러리도 포함됨
ART 및 HAL과 같은 많은 핵심 Android 시스템 구성요소 및 서비스는 C 및 C++로 작성된 네이티브 라이브러리가 필요한 네이티브 코드에서 빌드됨
Android 플랫폼은 이러한 일부 네이티브 라이브러리의 기능을 앱에서 사용할 수 있게 Java 프레임워크 API를 제공
C 또는 C++ 코드가 필요한 앱을 개발하는 경우에는 Android NDK를 사용하여 네이티브 코드에서 직접 이러한 몇몇 네이티브 플랫폼 라이브러리에 액세스 가능
Android OS의 전체 기능 세트는 자바로 작성된 API를 통해 액세스 가능, 이러한 API는 핵심 모듈식 시스템 구성요소 및 서비스 재사용을 단순화하여 Android 앱을 제작하는 데 필요한 기본 요소를 구성함
앱의 기본 구성 요소
개발자는 Android 시스템 앱이 사용하는 것과 동일한 프레임워크 API에 대한 전체 액세스 권한을 가짐
이메일, SMS 메시징, 캘린더, 인터넷 검색, 연락처 등의 기본 앱 및 사용자가 설치하는 앱
기본 앱과 사용자가 설치하는 앱을 구분하지 않아 타사 앱을 기본 웹 브라우저, SMS 메신저 등으로 사용 가능
시스템 앱은 사용자를 위한 앱으로도 작동하고 개발자가 자체 앱에서 액세스할 수 있는 주요 기능을 제공하기 위해 작동, 예시로 앱에서 SMS 메시지를 전달하도록 하려면 이 기능을 직접 빌드하지 않고 이미 설치된 SMS 앱을 호출하여 지정한 수신자에게 메시지를 전송할 수 있음