안드로이드 Architecture

Dev.nuts·2021년 6월 21일
0

안드로이드 구조 Architecture텍스트

1. 리눅스 커널 계층

안드로이드 계층 최하단에 위치하며, 시스템 전체의 중심역할을 한다.
사용자나, 개발자가 이 쪽 계층에서 작업을 한다거나 상호작용 할 일은 없습니다.
커널에서 담당하는 일은 다음과 같습니다.
	* 하드웨어 추상화
	* 메모리 관리
	* 보안 설정
	* 전원 관리
	* 다른 하드웨어 장치 드라이버 관리
	* 네트워크 시스템 관리

2. 네이티브 라이브러리 계층

안드로이드는 상대적으로 작은 용량의 주 기억장치와 저전력의 CPU가 탑재된 기기에서
동작하기 때문에 이러한 기기에 최적화된 원시코드로 컴파일 됩니다.
libc 또는 libm 과 같은 기본적인 라이브러리는 특히 메모리 소비가 적기 때문에
안드로이드에 적합합니다. 이 계층의 SurfaceManager는 프레임워크 계층의 WindeoManager의
화면 접근에 대한 처리를 하기도 하고, Media Framework는 오디오 및 비디오 코덱을 포함하여
각종 음악, 동영상, 사진을 포함한 각종 미디어 처리를 담당합니다.
그 외에도 다음과 같은 오픈 소스 라이브러리를 포함하고 있습니다.
	* SGL : 2D 그래픽담당
	* Open GL ES : 2D/3D 그래픽 담당
	* Free Type : 폰트 렌더링
	* WebKit : 웹 브라우저 엔진
	* libc : 시스템 C 라이브러리
	* SQLite : 모바일을 위한 경량화된 데이터 베이스
	* SSL : Secure Socket Layer 프로토콜

3. 안드로이드 런타임 계층 (ART)

일반적인 컴파일 언어는 CPU의 아키텍쳐와 플랫폼의 환경에 맞추어 기계어로 컴파일됩니다. 
간단히 말하자면, 사람이 작성한 프로그램을 CPU가 알아들을 수 있는 언어로 바로 번역하여
저장하는 것입니다. 이 CPU간의 서로 다른 '언어'가 '아키텍처'에 해당한다고 보면 됩니다.
그러나, 자바의 경우는 기본적으로 한 가지 CPU의 아키텍쳐나 환경에 맞추는 것이 아닌
바이트코드 하나만으로 여러가지 아키텍쳐나 플랫폼에서 작동할 수 있또록 하는 것이 목표이기
떄문입니다. 아키텍쳐와 플랫폼에 맞는 가상머신만 있다면, 하나의 실행 파일만 가지고도
각종 장치에서 쓸 수 있습니다.

구글에서, JVM 라이선스 문제가 있어서 구글에서는 Dalvik VM을 따로 개발해서 안드로이드에
넣었습니다. 하지만, 안드로이드 5.0 롤리팝부터는 Dalvik VM을 폐지하고 ART를 새로운 런타임으로
완전히 대체하며, x86, mips 아키텍쳐 및 64비트를 공식적으로 지원할 수 있게 되었습니다.

4. 애플리케이션 프레임워크 계층

ActivityManager : 애플리케이션 내의 액티비티들을 관리합니다.
Content Providers : 애플리케이션 간의 데이터 공유를 담당합니다.
Telephony Manager : 음성통화를 관리합니다.
Location Manager : GPS 또는 기지국신호를 통해 위치정보를 관리합니다.
Resource Manager : 애플리케이션에서 우리가 사용하는 많은 종류의 리소스들을 관리합니다.

이 계층부터는 자바로 작성되며, 기본 네이티브 라이브러리와 안드로이드 런타임을 추상화한
계층입니다. 안드로이드 애플리케이션은 자체 런타임에서 실행되며, Activity. Service. Broadcast Receiver,
Content Provider 와 같은 여러 구성 요소로 구성됩니다. 이러한 4대 컴포넌트는 다른 애플리케이션과
서로 상호작용할 수 있습니다.

5. 애플리케이션 계층

Android 구조 스택의 최상위 계층에 있으며, 안드로이드 기기를 사용하는 대부분의 사용자가
이레이어와 상호작용하게 됩니다. 예를들면, 전화 걸기, 웹브라우저, 카카오 톡, 게임 등
개발자는 애플리케이션 프레임워크를 이용하여 애플리케이션을 개발한 다음 배포하여 설치되는
APK가 애플리케이션 계층에 속하게 됩니다.
profile
40대에 은퇴해, 제주살이를 꿈꾸는 Fire족

0개의 댓글