본문 바로가기
Android

인사이드 안드로이드 01 안드로이드 프레임 워크 개요

by OKOK 2021. 5. 15.

저자 서문

"안드로이드 플랫폼의 필수 요소인 init 프로세스, 바인더, JNI, Zygote, 서비스 프레임워크, 핵심적인 시스템 서비스 등의 의 동작원리에 고나해 설명하고 있습니다."

 

"에상대로 개방성을 무기로 하는 안드로이드 플랫폼은 시장의 많은 제조사들을 끌어 들였고, 점차 시장의 큰 부분을 차지해 가고 있습니다." 

 

01 안드로이드 프레임 워크 개요

즉, 안드로이드는 모바일 디바이스용 애플리케이션을 쉽게 제작하기 위한 소프트웨어 프레임워크를 제공해 준다.

hardware:안드로이드 HAL(Hardware Abstraction Layer) 소스
package:안드로이드 기본 애플리케이션, 컨텐트 프로바이더

system:안드로이드 init 프로세스, 블루투스 도구 모음

 

1.2 부팅 프로세스로 알아보는 안드로이드 프레임워크

안드로이드 2.2기준으로 리눅스 코드를 제외한 내려받은 관련 소스코드의 크기가 4GB를 넘었다.

프로그램의 최초 시작점인 main()함수부터 차근차근 따라가면서 해당 프로그램의 흐름과 동작을 파악하는 데에 익숙함

 

안드로이드는 리눅스 기반의 플랫폼.따라서 부팅 시에 부트로더를 통해 리눅스 커널이 먼저 시작됨. 커널 초기화를 수행한 후 마지막 과정에서 init 프로세스를 호출함. init 프로세스가 안드로이드 디버그 브리지 연결 관리함. 

 

컨텍스트 매니저 : 안드로이드의 시스템 서비스를 관리하는 중요한 프로세스. 중요한 컴포넌트로서 카메라, 오디오, 비디오 처리에서부터 각종 애플리케이션 제작에 필요한 중요 API를 제공하는 등의 역할을 수행함. 각종 시스템 서비스에 대한 정보는 컨텍스트 매니저에게서 얻을 수 있음. 내부 모듈은 이를 서비스 매니저에게 요청해야 함. 요청 후에 바인더 매커니즘을 통해 시스템 서비스를 이용할 수 있음. 이를 위해 모든 시스템 서비스는 부팅 시 자신의 핸들 정보를 컨텐스트 매니저에 등록해야 함.

 

미디어 서버 : 오디오 출력이나 카메라 서비스 같이 C/C++기반으로 작성돼 있는 네이티브 시스템 서비스를 실행하는 역할을 함

Zygote : 애플리케이션의 로딩 시간을 단축하기 위한 프로세스로서 모든 자바 기반 안드로이드 애플리케이션은 Zygote를 통해 포크된 프로세스 상에서 동작됨

시스템 서버 : 생명 주기를 제어하는 액티비티 매니저 서비스나 단말기의 위치 정보를 제공하는 로케이션 매니저 서비스와 같은 자바 시스템 서비스를 실행하는 역할을 함

바인더 IPC를 통해 자바 시스템 서비스를 C언어 기반의 서비스 매니저에 등록하려면 자바와 C언어 간의 인터페이스 역할을 하는 JNI(Java native interface)를 추가로 이용해야 함

댓글