안드로이드

2011. 2. 7. 15:592010년/안드로이드



2011년 2월 7일

-안드로이드-

요즘의 대세 내가 생각해도 스마트폰이라면 대세로 사용하는것이 안드로이드.

사실 애플회사에서 독자적으로 사용하는 아이폰 OS를 사용한다 그 애플의 아이폰이

전세계적으로 히트를 치면서 다른 모든 모바일 회사들이 사용하는것이 안드로이드이다.

구글에서 제공하는 무엇보다 리눅스 기반이기 때문에 소스가 공개되어있다.

좀더 체계적으로 안드로이드를 보자

당연히  OS의 기본은 하드웨어를 관리하는 부분 펌웨어 부분 소프트웨어 부분이 있다.

각 부분이 다르다.

일단 5가지 구성을 가진다.

1.LINUX KERNEL

2.LIBRARIES

3.APPLICATION FRAMEWORK

4.APPLICATIONS

5.ANDROID RUNTIME


Applications

안드로이드에서 E-mail클라이언트, sms프로그램,달력,지도,브라우저,전화번호 등 핵심 APP를 가지고

있고 무엇보다 이 모든 Applications는 JAVA프로그래밍 언어로 작성된다.


Application Framework

Framework라는 말부터 알아야할것같다.

일단 대충 골격, 뼈대라는말이란 뜻이다.

Framework의 종류로 .Net, Application등 있으며

우리가 알아야하는 것은 Application Framework이다.

소프트웨어의 구체적인 부분에 해당하는 설계와 구현을

재사용이 가능하게끔 일련의 협업화된 형태로 클래스들을 제공하는 것”이라고 정의하였다.

정의부분에서 소프트웨어부분만  Application으로 바꾸면 된다.  즉 설계와 구현 재사용하고

클래스를 제공한다고 생각하면된다. 

여기서 Framework와 Library를 구분할수있어야한다.  Library 우리가 익숙하게 사용하는 함수다.

가져다 사용할수 있다. 하지만 여기서 Framework로 마찬가지로 가져다가 사용할수 있다.

차이점은 단하나 Framework는 좀더 그위에 개발된 개잘자의 코드를 제어한다.  좀더 구체적이며

확장 가능한 기반 코드를 가지고있고 설계자에 따라 여러가지패턴으로 구성된다.

그리고 안드로이드의 Application Framework는  JAVA 기반의 Framework이며

Java Native Interface(JNI)통해 C/C++코드로 작성되어 있다.

 

LIBRARIES

간단하게 말해서 안드로이드 시스템의 다향한 컴포넌트에 의해 사용되는 C/C++ 라이브러리 집합이다.

위에서 설명한 Application Framework 통해서 개발자에게 제공된다고 보면된다.

시스템 C 라이브러리 libc
임베디드 리눅스 기반의 디바이스를 위해서 구현된 표준 C 시스템 라이브러리의 구현물이며 Bionic이라 한다.
Bionic은 임베디드에서 사용을 위해 최적화된 직접 구현된 Libc이다. 기존 Linux Libc를 사용하지 않고 새로 만든
이유는 user-space에서는 GPL(General Public License : GNU 일반 공중 사용 허가서로 소스 수정 시 꼭
소스를 공개하여야 한다라는 규약이 있다.)을 사용하지 않기 위한 라이센스 이유와, 개별 프로세스마다 포함되어야
하는 영역이기 때문에 크기를 최소화하기 위해서이다. 또한 제한적 CPU 파워하에서도 빠를 필요가 있기 때문이다.

Function Library
웹 브라우저를 위한 WebKit, PacketVideo의 OpenCore 플랫폼 기반의 미디어 프레임워크, 가벼운 DB SQLite

 

ANDROID RUNTIME

조금은 알아둬야한다. 다른부분은 잘 들어봤어도 바로 가상머신이라는것을

기본으로 우리가 프로그램을 돌리기위해서는 기계어로 변경시켜주는 작업이 필요하다.

보통 일반 순수 C코드를 object 파일로 변경할때 다 똑같다면 얼마나 좋을까~?

하지만 틀리다. 즉 우리가 ms에서 사용하는  cl -o ** 과 gcc -o로 만들어지는 object파일이 같을까?

환경에따라서 컴파일과정 방법도 다르다.  이러한 여러가지 다른환경에서 만들어진경우에도 제대로

같게 동작할수있게 만든것이 Davik Virtual Machine이다. 달빅을 통해서 Application의 호환성과

실행때 일관성을 제공하며 최적화된 파일 포맷(.dex)와 Dalvik바이트 코드로 실행한다.

Dalvik 가상머신은 임베디드 환경을 위해 디자인 되었다. Dalvik은 디바이스 별로 다양한 가상머신

프로세스들을 지원하며, 높은 수준으로 CPU에 최적화된 바이트코드 인터프리터에 기반하여

실행 시 메모리를 매우 효율적으로 사용한다.

Core 라이브러리는 Java 언어로 라이브러리들을 사용할 수 있도록 한다.

Core 라이브러리들은 강력하지만, 단순하고 익숙한 개발 플랫폼을 제공하는 Java 언어를 위한

Core API들을 포함하고 있다. 여기에는 Data structure, Utility, File Access,

Network Access, Graphic 등이 포함되어 있다.

 

LINUX KERNEL

안드로이드는 리눅스 커널을 기반하고 있으나, 리눅스는 아니다. X-Window와 같은 내장 윈도우

시스템을 포함하지 않으며, glibc를 지원하지 않는다. 표준 리눅스 유틸리티 전체를 포함하지

않는다.

'2010년 > 안드로이드' 카테고리의 다른 글

2011년 02월21일  (0) 2011.02.21
2011년 2월16일  (0) 2011.02.16
2011년 2월 11일  (0) 2011.02.11
2011년 2월 10일  (0) 2011.02.10
2011년 2월9일  (0) 2011.02.09