Linux Kernel
HAL
Hardware Abstraction Layer(하드웨어 추상화 계층)
상위 수준의 Java API 프레임워크에 기기 하드웨어 기능을 노출하는 표준 인터페이스를 제공
HAL은 여러 라이브러릴 모듈로 구성되어 있으며, 카메라 또는 블루투스 모듈과 같은 특정 유형의 하드웨어 구성 요소를 위한 인터페이스를 구현
프레임워크 API가 기기 하드웨어에 엑세스하기 위해 호출을 수행하면 Android 시스템이 해당 하드웨어 구성 요소에 대한 라이브러리 모듈을 로드
Native C / C++ Libraries
Android Runtime
Java API Framework
System Apps
컴포넌트란
컴포넌트는 앱 내에서의 독립적인 실행 단위(구성 단위)
컴포넌트 여러 개를 조합하여 하나의 앱을 만듦
일반 클래스와 달리 생명주기를 안드로이드 시스템이 관리
독립적인 실행 단위라는 말은 직접 코드로 결합해서 실행하는 것이 아니라 컴포넌트 간에 Intent라는 특정 클래스를 매개로 하여 결합하지 않은 상태로 실행하는 구조
Main 함수 같은 애플리케이션의 진입 지점이 따로 없음
컴포넌트 종류
초기 안드로이드 런타임 시 사용됨
Android 2.2 이후 JIT 컴파일러로 처음 적용됨
AOT 컴파일러 사용
Android 4.4(API 19)에서 처음으로 등장, 도입
Android 5.5(API 21) 이후 기본 런타임으로 지정
Android 7.0 이후로는 AOT+JIT