티스토리 뷰

오늘부터 안드로이드 프레임워크를 공부하고 블로깅할 계획이다. 

안드로이드 프레임워크를 선택한 이유는 안드로이드 어플리케이션만 다루다보니 깊이가 없는 느낌을 많이 받아서 내부적으로 돌아가는 방식도 알고 싶고 공부해 놓으면 쓸데가 많을 것 같아서이다.



'인사이드 안드로이드'라는 책을 보면 다음과 같은 안드로이드 부팅과정을 알 수 있다. 


1)리눅스 커널

 안드로이드는 리눅스 기반의 플랫폼이다. 그래서 스마트폰 부팅 시에 리눅스가 부팅되고 커널을 초기화한 후 마지막으로 init 프로세스를 호출한다.


2)init 프로세스

 각종 디바이스 초기화 + 각종 데몬 실행 + Context manager 실행 + Media Server 실행 + Zygote 실행 

데몬 종류 

 USB 데몬(usbd)

 USB 연결 관리

 안드로이드 디버그 브리지 데몬(adbd) 

 ADB 연결 관리

 디버거 데몬(debuggerd) 

 디버그 시스템 시작

 무선 인터페이스 레이어 데몬(rild) 

 무선 통신 연결 관리


3)Context Manager

 컨텍스트 매니저는 네이티브 시스템 서비스나 자바 시스템 서비스를 관리하는 놈이다. 그래서 안드로이드 내의 시스템 서비스를 이용하려는 어플이나 프레임워크의 내부 모듈들은 안드로이드 내의 자체적인 바인더 IPC(Inter-process communication)통신을 이용해서 시스템 서비스를 사용한다.

 한마디로 안드로이드 내에서 시스템 서비스는 전부 컨텍스트 매니저가 관리하기 때문에 시스템 서비스를 쓰려면 컨텍스트 매니저를 거쳐야 된다는 소리다.

 ※시스템 서비스는 카메라, 오디오, 비디오 처리, 등의 각종 어플 제작에 필요한 중요 API를 제공하는 놈 (자바 시스템 서비스 + 네이티브 시스템 서비스)


4)Media Server

 이것도 정확히는 모르겠는데 Audio Flinger와 Camera Service 같은 C/C++기반으로 작성된 네이티브 시스템 서비스를 실행하는 역할을 하는 것 같다.


5)Zygote(지고트)

 안드로이드 어플리케이션을 새로 실행할 때 로딩시간을 단축하기 위해 어플실행에 기본적으로 필요한 자원들을 미리 만들어 놓고 거기에 어플을 얹는 방식의 프로세스인것 같다.. 


6)System Server

 이건 아직 정확히는 모르겠는데 어플리케이션이 실행되면 Activity Manager, Package Manager, Window Manager,Location Manager, Suface Flinger... 등등 의 자바 시스템 서비스 를 실행하는 역할을 하는 것 같다.



이외에도 여러가지가 많다. JNI, 바인더 IPC,등등의 용어가 많은데 공부하면서 하나하나 알아가 봐야겠다.

오늘은 첫 포스팅을 하기위해 안드로이드 프레임워크에 대해 찾아보았다. 아주 개략적으로 나마 안드로이드의 구조에 대해 알 수 있는 것 같다. 앞으로 소스코드 분석을 통해 더욱 자세히 알아볼 계획이다. 


참고사이트

[강남 6기 송태현]안드로이드 멀티 윈도우 오픈소스 분석(HALO)

http://blog.secmem.org/492

[강남 6기 송태현]안드로이드 프레임워크상에서 외부 입력 모듈 분석

http://blog.secmem.org/507

안드로이드 구조와 원리 정리

http://jinhobak.tistory.com/414



  


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함