'2010/06/26'에 해당되는 글 1건

  1. 2010.06.26 안드로이드 개요 by 응큼미소

 이제부터 저의 2010년 여름방학의 소중한 시간들을 적어볼까 해요.
 여름방학때 T아카데미의 안드로이드 전문가과정 2기에 참여하는 기회를 얻게 되어서 
 저의 여름방학은 안드로이드로 채워질것 같은데요
 그럼 바로 T아카데미에서 갖게될 안드로이드 이야기를 시작하도록 할께요

 임베디드 장치에는 리눅스 OS를 많이 써왔는데요 리눅스라는 OS를 쓰긴했지만 장치마다 틀렸어요.
 그런데 안드로이드라는 녀석은 JAVA라는 언어로 하나로 통합해서 임베디드 어플리케이션을 만들수
있도록 하죠. 

 그리고 리눅스는 내가 오픈소스를 가져와서 고치고, 고친부분을 다시 공개해야 했어요. 이렇게 되는 경우
상업적으로 이용하는데에 제약이 있었죠. 하지만 안드로이드는 다시 공개를 안해도 되요. 이건 안드로이드
구조를 만드는데 많은 영향을 끼쳤죠.

 구글이 기존에 리눅스 커널위에 올릴때는 힘들었던 기본 기능과 서비스들을 골라서 넣어놨어요. 또 JAVA언어 개발
툴인 이클립스가 있기 때문에 PC만 있으면 개발을 바로 시작할 수 있죠. 이건 iPhone APP을 만들기 위해 MAC북 같은
게 있어야 되는 아이폰이랑 비교가 되는 부분이죠.

 안드로이드는 하드웨어 플렛폼은 아니에요. 리눅스 커널기반 OS이죠. 그런데 리눅스도 커널까지만 쓰고 리눅스의
유틸리티 같은건 포함 안했어요. 그 안에 라이브러리는 C나 C++로 되어있죠. 그리고 가장 위에 사용자 APP는 자바 언어를
이용하죠. 리눅스는 디바이스에 탑재될때 어떤 유틸리티 등이 꼭 들어가야되고 등등 제약이 없어요. 그래서 하나로 통합된 OS라고는 보기 힘들었죠. 하지만 안드로이드는 그런점에서 교집합이 많아요. 그 위에서 대부분의 App을 개발할 수 있죠. 새로운 부가장치가 단말에 장착되면 드라이버를 리눅스레벨에서 작성하면 되고요, 사용자 App은 안드로이드 SDK에 맞게 개발해서 올리면 되요.

 안드로이드의 전략은 모바일 시장의 주요 참여자인 이동통신사, 단말제조사, 소프트웨어 개발회사들을 동시에 만족시키
는 거에요. 그래서 구글은 자신의 역할은 크지만 커널, API등을 오픈으로 하고 있어서 다른 업체들의 우려를 덜어냈죠. 구글은 그동안 기술, 표준안 등을 만들고 다른 업체를 참여시킨 경험이 많기 때문인거 같아요. 이미 많은 제조사들이 안드로이드 기반의 단말을 만들고 배포하고 있어요. 

 안드로이드에서는 웹 브라우저를 기본적으로 제공하는데요 오픈소스 기반의 웹킷엔진이 장착되어 있기 때문에 가능하죠. 웹킷은 이미 스마트폰 쪽에서 표준이 되어가고 있어요.구글맵도 있는데요 이건 오픈소스는 아니에요. 

 안드로이드 역시 모바일 쪽에서 많이 채택해서 사용하는 3D그래픽 지원인 OpenGL ES를 사용하고요, 구글이 아이폰의 아이튠을 대적해서 WEBM이라는 표준 코덱을 공개한후 안드로이드 폰에 탑재 시키려는 노력을 하고있죠.

 안드로이드는 거의 모든 시스템 기능을 제한없이 접근할 수 있어요. 이러한 특징때문에 모바일 프로그래머의 천국으로 보이기도 하는데요, 그만큼 보안이 취약하다는 걱정이 있죠. 
 
 안드로이드 아키텍쳐에서 웹킷, 그래픽 라이브러리, 임베디드 드라이브를 위한것 이런것들은 많은 시간이 요구되는 것들이기 때문에 C나 C++로 작성이 되서 들어가요. 그리고 리눅스 제공 드라이버들을 그대로 사용할 수 있어서 제조사들이 빠르게 넘어올 수 있는 발판이 되죠. 그리고 리눅스 커널에서는 프로세스관리, 메모리관리, 전원관리, 보안모델등 까지만 채택해서 쓰고 있어요.
 안드로이드 런타임은 달빅VM과 Core라이브러리로 구성되어 있는데요 달빅VM은 각각의 프로세스마다 구동되기 때문에 프로세스 하나가 죽는다고 전체가 죽는 등의 사태를 막을 수 있죠.
 
 안드로이드 애플리케이션 프레임워크를 볼께요. 이 부분은 안드로이드를 이해하는데 있어서 매우 중요한 부분이죠.
 액티비티 관리자란 놈이 있어요. Activity Manager인데요 얘는 애플리케이션의 라이프사이클을 제어하는애로 UI에서 가장 중요하죠.
 Content Provider라는 애도 있는데요, 얘는 데이터를 관리해요.
 Resource Manager는 말 그대로 리소스를 관리하는 애로, 오디오 파일 등등의 리소스를 관리해요.
 Location Manager는 자신의 위치파악에 필요한 기능을 제공하죠.
 Notification Manager는 사용자에게 새로운 소식을 알려야 할때 방해가 되지 않도록 제공해요.
 
 안드로이드 개발의 과정은 2가지로 나눠볼 수 있는데요
 첫번째로 기존의 디바이스 만드는 업체들이 하드웨어 연관된 곳을 개발하죠. 여기서는 안정성, 최적화를 위해 C를 주로 사용해요.
 두번째로 App관련된 부분을 안드로이드 SDK로 개발해요. 여기서는 최적화 등등을 일일이 신경 쓸 필요 없지만 전체적인 Software구성을 위한 소프트웨어 엔지니어링 기술이 많이 필요해요. 
 
 안드로이드는 컴포넌트 기반으로 동작하는데요 각각의 컴포넌트는 독립적으로 구성되어 있어요. 여기에는 Activity, Service, Broadcast Receiver, Content Provider가 있죠. 여기서 Broadcast Receiver는 폰 내부에서 발생하는 다양한 이벤트를 처리해 주는 애에요. Content Provider는 App간에 데이터를 공유하고 교환해 주는 애죠. Activity는 애플리케이션에서 보이는 부분으로 한 화면을 나타내요. Service는 백그라운드에서 실행되며 UI가 없는 작업을 하죠. 얘는 이벤트를 발생시켜요. 

 안드로이드는 자바 SDK의 많은 부분이 그대로 지원되는데요, AWT, SWING등은 안드로이드에서 활용할 수 없어요. 이런거 대신 안드로이드 패키지(android.*)에서 지원해 주죠.
 
 
신고

'T아카데미' 카테고리의 다른 글

사용자인터페이스_02  (0) 2010.07.02
사용자인터페이스_02  (0) 2010.07.01
어플리케이션 구조  (0) 2010.07.01
사용자인터페이스_01  (0) 2010.07.01
안드로이드 개발환경  (0) 2010.06.27
안드로이드 개요  (0) 2010.06.26
Posted by 응큼미소


티스토리 툴바