목차
1. 안드로이드 플랫폼
A. 어플리케이션들
B. 어플리케이션 프레임워크
Notification Manager
Location Manager
Activity Manager
Content Provider
Resource Manager
View System
Package Manager
Window Manager
C. 안드로이드 런타임
Core Java 라이브러리
Dalvik Virtual Machine
D. 시스템 라이브러리
E. 리눅스커널 (안드로이드 수정 부분 포함)
2. 개발환경
A. 다운로드 & 설치하기
B. Using the Android Studio IDE
C. 프로젝트 폴더 설명
3. 시리즈 연재
1. 안드로이드 플랫폼
Coursera에서 강의를 하나 듣기 시작했다. 약간 강의 노트 비슷한 형태로 정리해가면서 들어볼 예정이다. 아래는 안드로이드 구조와 소프트웨어 스택에 대해서 알 수 있는 그림이다. 조금 연식이 된 그림이라. Android Runtime에 ART가 표시되어 있지는 않다.
A. 어플리케이션들
최초 릴리즈 될 때 포함되는 빌트인 앱들이라고 보면 된다. (Home 스크린, 연락처, 전화 등) 하지만 제조사에서는 이 앱들을 그대로 사용하지 않고 자체 앱들로 대체해서 제품을 출시한다. 제조사 입장에서는 제품에 특징을 부여할 수 있는 부분이니까 어쩔 수 없는 선택이라고 볼 수 있다. 다만 개인적으로는 순정의 성능에는 미치지 못하는 것 같다. Application 영역을 벗어나면 거의 하드웨어 싸움으로 흐르는 것 같다.
B. 어플리케이션 프레임워크
안드로이드 앱들이 공통적으로 사용하는 부분들이 존재하는 레이어이다. 대부분은 java 서비스 형태로 존재하고 있다.
Notification Manager
중요한 이벤트가 발생했을 때, Notification BAR에 Notification Icons을 표시해주는 모듈.
Location Manager
디바이스의 현재 위치와 움직임 정보를 제공해주는 모듈.
Activity Manager
앱의 라이브사이클을 관리하고 Navigation Stack을 관리하는 모듈.
Content Provider
어플리케이션간 데이터 공유에 사용되는 모듈.
Resource Manager
문자열, 이미지, 레이아웃 파일 등 컴파일 되지 않는 리소스들을 처리해주는 모듈.
앱은 여러 언어에 해당하는 문자열 테이블 파일들을 가지고 있고 시스템의 기본언어가 변경될 때마다 이 모듈의 도움을 받아 표시언어가 바뀐다.
View System
일반적인 유저 인터페이스 아이템들을 제공해주는 모듈.
(탭, 버튼, 텍스트 뷰, 텍스트 박스, 아이콘 등)
Package Manager
디바이스 내에 안드로이드 앱들을 관리하는 모듈.
응용간에 협력이 필요할 때 Package Manager가 제공해주는 기능을 사용하게 된다.
Window Manager
Notification BAR, Main Window, Menu & Dialog 같은 서브 윈도우를 처리해주는 모듈
C. 안드로이드 런타임
Core Java 라이브러리
안드로이드 앱을 개발하기 위한 빌딩블록을 제공해주는 라이브러리
일반적인 자바 클래스들은 : java.*
안드로이드 라이프사이클 관련은 : android.*
인터넷/웹 서비스는 : org.*
유닛 테스팅 : junit.*
Dalvik Virtual Machine
안드로이드 앱은 Dalvik Virtual Machine에 의해서 수행된다. Dalvik Virtual Machine은 모바일 디바이스의 리소스 제약사항 (낮은 CPU, 작은 메모리 등)에 맞게 개발된 java 런타임이다. Dalvik Virtual Machine에 대해서 상세한 내용은 아래 유투브 동영상 확인하자.
아래는 Dalvik Virtual Machine이 안드로이드 앱을 실행시키는 일반적인 흐름이다. 아주 명확한 그림이 있어서 여기 첨부한다.
Java 언어를 이용해서 앱을 개발한다.
javac (자바 컴파일러)를 통해서 java bytecode 파일로 변환한다. (JVM에서 구동 가능한 형태다)
DX Converter를 통해 java bytecode 파일들은 하나의 DEX bytecode 파일로 변환한다. (classes.dex)
DEX 파일은 다른 리소스와 함께 (이미지, 데이터파일 등) 앱으로 패키징한다.
Dalvik Virtual Machine을 통해 DEX 파일을 구동한다.
D. 시스템 라이브러리
성능이 중요한 부분으로 C/C++로 구현된다.
System C Library : Bionic libc (라이센스 문제로 구글 자체에서 개발)
Surface Mgr : 렌더링 관련 작업
Media / Audio / Video Framework
Webkit : 브라우저 엔진
OpenGL
SQLite : 관계형 데이터베이스
E. 리눅스커널 (안드로이드 수정 부분 포함)
모바일 디바이스의 한계 (성능, 리소스 문제) 때문에 안드로이드에서 아래와 같은 기능들이 추가되었다.
Power Management
Android Shared Memory
Low memory Killer
Interprocess communication (=Binder)
2. 개발환경
앱을 개발하기 위한 라이브러리와 툴들 집합이다. 그리고 엄청난 문서들이 제공되고 있다. 다음 링크를 확인해보자.
A. 다운로드 & 설치하기
아래는 소프트웨어와 하드웨어 제약 & 권장 사항이다.
JAVA SDK를 먼저 설치해야 한다. (링크)
2 GB RAM min, 4 GB RAM rec
1 GB+ for Android SDK, emulator system images and caches
400 MB hard disk space
1280 x 800 min screen resolution
다운로드는 여기서 한다. 상세 내용은 다음 비디오를 참고하자.
안드로이드 SDK에 포함된 내용들이다.
Android platform
Android Studio IDE
Key development tools
System image for emulator
B. Using the Android Studio IDE
C. 프로젝트 폴더 설명
3. 시리즈 연재
'소프트웨어 > 안드로이드앱' 카테고리의 다른 글
[안드로이드 기초#3] 액티비티 (Activity) (0) | 2015.07.01 |
---|---|
[안드로이드 기초#2] 어플리케이션 기본 (0) | 2015.06.30 |
안드로이드 스튜디오의 유용한 단축키 (3) | 2015.06.28 |
안드로이드 스튜디오 샘플코드 임포트 (0) | 2015.06.27 |
안드로이드 코딩 스타일 가이드라인 (1) | 2015.06.26 |