2015년 6월 29일 월요일

[SW 아키텍처] Android 모바일 기반 아키텍처 사례

출처: http://hyeonstorage.tistory.com/138

Android 모바일 기반 아키텍처 사례

* 모바일 기반 아키텍처 정의서


* 문서관리


* 목차


1. Android Application 개발 개요

1.1 Android Application은 Java로 작성되며 Compile된 Class와 데이터, 리소스와 파일과 함께 apk 파일 형태로 묶여진다.

1.2 apk 파일은 Application 배포/설치를 위한 단위이며 하나의 Application으로 간주된다.

1.3 모든 Application은 리눅스 프로세스에서 실행된다.
1) 각 프로세스는 자신만의 VM을 가진다.
2) 각 Application은 고유한 userId를 가지며 Permission이 설정된다.
3) 두 개의 Application은 동일한 userId 공유가 가능하다 (동일 프로세스, VM 공유)

2. Android Application 개발 과정






3. Android Application Start-up (구동 프로세스)



리 눅스 커널 구동 후 최초로 실행되는 프로세스는 Zygote이다. Zygote란 어플리케이션을 빠르게 구동하기 위해서 미리 Fork 되어 있는 프로세스이다. 이것은 시스템에서 exec() 호출을 통해 특정 어플리케이션을 실행하고자 하기 전까지는 중립적인 상태, 즉 특정 어플리케이션과 합체되지 않은 상태를 유지한다.

4. Anroid 프로세스


* Android 프로세스 흐름 

리눅스는 기본적으로 Init이 가장 먼저 실행된다. Init.rc 라는 이름의 파일에는 Init이 해야할 작업들이 기록되어 있다. 파일시스템 마운팅, 폴더 권한설정, 캐시폴더 삭제, 시작프로그램 동작 등이 기록되어 있다.

우선 데몬을 올린다. 데몬은 Init에 의해 리눅스와 같이 시작되었다가 리눅스가 종료될 때 없어지는 프로그램으로서 데몬을 작성하는 규격에 따라 만들어져야 한다.

Zygote가 Dalvik을 초기화 한다. C 밑에 있는 기본라이브러리들은 런타임을 통해 실행되고 상위 서비스들은 Dalvic을 통해 실행된다. 이러한 과정들을 위한 설정은 해당하는 config 파일을 수정하면 된다. 어떤 동작들을 바꾸고 싶으면 기본적으로 init.rc를 바꾸면 되고 Zygote를 바꾸고 싶으면 그 설정파일을 바꾸면 된다.

그리고 시스템서버, 서페이스매니저(SurfaceManager), 오디오매니저들이 올라간다.

그 다음에는 시스템 서비스들이 활성화 된다. 이들은 서비스들이므로 서비스매니저에 등록된다.



5. Android 개발 구성 요소

User Interface, Resource and Assets, Intents & Intent Filter, Data Storage, Contentt Providers, Security & Permission

Graphics, Audio and Video, Location and Maps, App Widgets, Message Handling

댓글 없음: