본문 바로가기

Android Life

안드로이드의 등장

김상형 - 안드로이드 프로그래밍 정복 참조 정리



개발 주체: 명목상 OHA(Open Handset Appliance) 컨소시엄 ; 비독점 개발 플랫폼 지향
실질 리더: Google
               - 모바일 환경에서의 인터넷 보급 수단 필요 (데스트 탑 시장에서의 입지)

2005년 7월 개발 시작, 2007년 11월 안드로이드 첫 버전 릴리즈
최초의 상용 안드로이드 폰: HTC G1

안드로이드 버전
 Version  Release date  API Level
 1.0  2008/09  1
 1.1  2009/02  2
 1.5 (Cup cake)  2009/04  3
 1.6 (Donut)  2009/09  4
 2.0 (Eclair)  2009/10  5
 2.1  2010/01  7
 2.2 (Froyo)  2010/05  8

* API - 일부 고급 기능을 제외하면 1.5 버전 이후 큰 변화 없음
* SDK 하위 호환성은 대부분 잘 유지, 일부 없어진 기능도 있음.



특징
1) Kernel: Linux 기반
2) Programming language: JAVA (C 로 개발가능한 NDK 발표, 일반적이지 않음)
3) 검증된 많은 라이브러리 포함 (OpenGL, SQLite, FreeType etc...)

Android architecture

(출처: http://www.androidside.com/docs/docs1.1/images/system-architecture.jpg)

* Libraries : C로 작성되어 있음
   - SGL : 2D Graphics  서피스 관리자
   - FreeType: Vector font output

* Android runtime
   - Dalvik Virtual Machine : 
     1)자바 가상머신을 직접 사용하지 않고 모바일 환경에 최적화한 달빅 가상머신 사용
     2) 각 프로세스별로 별도의 달빅 가상 머신 할당 (안정성, 메모리 효율성)
     3) 달빅은 자바 클래스 바로 실행 못함. -> 클래스 파일을 dex 포맷으로 변경해야 사용 가능

* Framework: Android API 
   

Android 4가지 구성요소
- 안드로이드 실행 파일: 같은 패키지 속에 속한 자바 클래스와 리소스의 집합일 뿐 (프로세스와 반드시 대응되지 않음, 응용 프로그램끼리 서로 공유 가능)

- 응용 프로그램은 적절한 권한만 있으면 누구든지 인스턴스화 가능한 4개의 컴포넌트 구성
  (main과 같은 유일한 진입점이 따로 없음, 처음 생성되는 인스턴스의 생성자가 실질 진입점이 됨.)

1) Activity : 사용자 인터페이스의 기본 단위 (윈도우 보단 큰 개념), 응용 프로그램은 필요한만큼의 액티
                  비티 가질 수 있음.
2) Service:  Background에서 무한히 실행되는 컴포넌트 (UI 없음, 액티비티와 연결해서 사용)
                  예) 미디어플레이어, 네트웍 감시
3) Broadcast Receiver: 시스템으로부터 전달되는 방송 대기, 신호 전달 시 수신 역할 (UI 없음, 액티비티                                   와 연결 사용)
4) Content Provider: 타 응용 프로그램을 위해 자신의 데이터를 제공. 응용 프로그램간 데이터를 공유할
                              수 있는 합법적 유일 장치. (예. 데이터베이스, 주소록)

- 응용 프로그램은 컴포넌트들 중 일부 또는 여러개 가지는 것이 가능, 컴포넌트의 구성은 매니페스트에      설정파일에 저장, 관리. 최초 실행 액티비티 정보도 매니페스트에 관리.

인텐트 (Intents)
- 4가지 컴포넌트는 서로 독립적으로 동작, 상호간의 통신을 위한 장치 필요, 인텐트가 담당.
- 컴포넌트간의 통신수단, 메시지에 대한 상세 정보 가짐
예. 주소록 목록 액티비티 -> 편집 액티비티 호출
     (누구의 주소를 어떤 식으로 편집하라는 지시가 인텐트에 실림)


학습준비 상황...

1) 자바의 문법적 이해 필수 (ㅜ.ㅜ)  (문법서 1권 정도 참고하자! )
2) XML: 기본 규칙 및 문서 편집 방법 정도 (인터넷 혹은 집 책장 구석에 쳐박혀 있을 Wrox책 참고)
3) Eclipse: 공식 개발 툴의 사용방법 (공부하면서...)