'안드로이드'에 해당되는 글 1건

  1. 2011.10.10 What is Android?
Android2011. 10. 10. 17:45

안드로이드란 모바일 장치에 포함된 OS와 미들웨어 주요 어플리케이션들을 말한다.
안드로이드 SDK에는 안드로이드 플랫폼위에서 실행할 어플리케이션 개발에 필요한 툴과 API를 제공한다. 개발언어는 Java를 사용한다.

* 특징
컴퍼넌트의 재사용과 재배치를 지원한다.
달빅(Dalvik)가상 머신으로 모바일기기에 최적화를 지원한다.
오픈소스인
웹킷엔진을 기반으로한  통합브라우저를 사용한다.
2D그래픽라이브러리와 OpenGL ES 1.0 스펙의 3D(하드웨어 가속 포함)를 지원한 최적화된 그래픽을 지원한다.
Data구조로는 SQLite를 지원한다.
오디오,비디오,이미지(Mpeg, H.264, MP3, AAC, AMR, JPG, PNG, GIF)를 지원한다.
GSM통신법을 지원한다.(장치마다 다를 수 있다)
블루투스, EDGE, 3G와 Wifi를 지원한다.
카메라, GPS, 나침반, 가속도계를 지원한다.(장치마다 다르다)
풍부한 개발 환경을 지원한다.(에뮬레이터, 디버그툴, 메모리와 성능 프로파일러, 이클립스 플러그인)

* 안드로이드 구조
아래표는 안드로이드OS의 주요 컴퍼넌트를 보여주고있다. 각 섹션은 하단에 자세히 보여주고 있다.



* 어플리케이션
안드로이드는 배처럼 안에 이메일 클라이언트, SMS, 달력, 지도, 웹브라우저 등등을 만들어 올릴 수 있다. 이 모든 어플리케이션은 자바 프로그래밍을 통해 만든다.

* 어플리케이션 프레임워크
안드로이드는 개발자에게 매우 풍부하고 혁신적인 개발 플랫폼을 제공한다. 또한 지역정보(LBS), 백그라운드 서비스, 알람 설정, 상태바에 정보를 알리는 등등 그 이상의 기능 활용에 자유롭고 유리하다.

개발자는 프레임워크에서 제공하는 코어 어클리케이션의 API까지 모두 접근이 가능하다.
어플리케이션 구조는 간단하며 컴퍼넌트의 재사용이 가능하도록 설계되었다. 어떤 어플리케이션은 그 자체로 사용이 가능하고 어떤 컴퍼넌트는 구성요소로서 조합하여 기능을 발휘한다. 이같은 메카니즘은 유저가 override나 재구성할 수 있도록 허용하고 있다.

밑단의 모든 어플리케이션은 시스템과 기능을 설정할 수 있다.
- 제공하는 View들은 풍부한 확장이 가능하게 설정할 수 있고 어플리케이션을 빌드하는데 일반적으로 사용한다. 이들은 리스트와 그리드, 문자, 버튼, 웹브라우저등을 포함한다.
- Content Provider들을 통해 다른 어플리케이션간에 데이터 공유/교환이 가능하다.
- 리소스 매니저를 통해 문자와 그래픽, 레이아웃 파일등을 코드없이 접근이 가능하다.(리소스를 추가하면 자동으로 XML에 추가되어 사용하게 된다. 대부분 정해진 이름의 폴더를 만들어 사용하게된다.)
- 알림매니저를 통해 모든 어플리케이션의 상태바에서 노출이 가능하다.
- Activity 매니저를 통해 어플리케이션의 수명과 네비게이션을 관리한다.(실제 안드로이드는 Activity라는 View단위로 화면을 구성하게 되며 일반적으론 Intent라는 클래스를 새로운뷰를 호출하고 관리한다.)

* 라이브러리
안드로이드시스템은 실제로 C/C++라이브러리들을 포함하고있다. 이러한 것들은 안드로이드 프레임워크를 통해 개발자에게 노출된다.
- 시스템  C 라이브러리 : 임베디드 리눅스 기반에 대한 표준 C 시스템 라이브러리 (libc)의 BSD 구현.
- 미디어 라이브러리 : PacketVideo의 OpenCORE를 기반으로 한다. OpenCORE는 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG를 포함한 대부분의 오디오와 비디오 포맷과 정적 이미지 파일에 대하여 재생과 레코딩을 제공한다.
- Surface 매니저 : 2D와 3D의 복합적인 어플리케이션의 디스플레이 하부 시스템으로 접근 관리한다.
- LibWebCore :  안드로이드 웹브라우저와 웹뷰를 제공하는 웹브라우저 엔진이다.
- SGL : 2D의 하부 그래픽 엔진이다.
- 3D 라이브러리 : OpenGL ES 1.0을 구현한다. OpenGL ES 1.0는 하드웨어(그래픽카드)의 3D 가속을 사용할 수 있게 하며 높은 퍼포먼스를 자랑한다.
- FreeType : 비트맵과 벡터 폰트를 렌더링한다.
- SQLite : 관계형 데이터베이스 엔진으로 가장 가볍고 강력하다. 모든 어플리케이션이 이용할 수 있다.


* 안드로이드 런타임
안드로이드의 코어 라이브러리는 모두 자바의 코어라이브러리의 기능을 제공한다. 모든 안드로이드 어플리케이션은 달빅가상머신(Dalvik virtual machine)의 인스턴스로 해당 인스턴스 프로세스 위에서 실행된다. 달빅은 한개의 장치에서 여러개의 프로세스가 실행시에 매우 효율적이다. 달빅은 Dalvik virtual machine(.dex)라는 파일을 사용하여 메모리 사용과 사용된 흔적을 최소한으로 최적화 할 수 있다. (VM은 자바언어로 컴파일된 클래스들을 .dex 포맷으로 변환하여 실행한다)
달빅은 리눅스 커널을 기반으로 low-level 메모리 관리와 쓰레드의 하위 기능을 관리한다.

* 리눅스 커널
안드로이드는 리눅스 버전 2.6에서 제공하는 서비스와 보안, 메모리 관리, 프로세스관리, 네트워크 스택, 드라이버 모델 등을 사용/준수한다.

Posted by 버터백통