Written by
LSM
on
on
TIL:AOSP
AOSP
Android Open Source Project의 준말
시스템 구성도
1. Linux Kernel
- 안드로이드 어플리케이션은 가상머신을 리눅스 커널에 띄우고 가상머신에서 앱을 실행
- 지원되는 여러가지 모드 칩, 하드웨어 드라이버 코드 포함
2. HAL
- Hardware Abstraction Layer
- 하드웨어 공급업체에서 구현해야 하는 표준 인터페이스에 대해 정의
3. Native Libraries
- 응용 프로그램이 리눅스 시스템 콜을 사용할 수 있도록 제공하는 라이브러리
- 안드로이드 경량화 라이브러리인 libc를 이용해 필요한 부분만 사용
4. Android Runtime
- 안드로이드 용 가상 머신
- Dalvik/ART 방식의 VM으로 앱을 구동
- Dalvik : .dex 파일을 Dalvik VM에 올림
- 다양한 HW, 아키텍쳐에서 실행 가능
- 배터리 소모 악영향 및 JIT Compile 코드로 인한 메모리 증가
- ART : OAT 파일을 돌림
- interpretor, JIT Compile 시간을 제거해 성능 향상
- 설치 시 소스 코드 번역하느라 느리고 파일을 따로 저장해 용량 증가
5. Android Framework
- 안드로이드가 일반적으로 제공해주는 기능들에 대한 레이어
References
- https://source.android.com/
- https://spoiler.tistory.com/106
- https://source.android.com/devices/architecture/kernel
- https://medium.com/@logishudson0218/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%BB%B4%ED%8C%8C%EC%9D%BC-%EB%B0%A9%EC%8B%9D-dalvikvm-art-b5d64350489f