본문 바로가기

프로그래밍/안드로이드

[안드로이드/Android] 안드로이드 기본 개요

[안드로이드] 안드로이드 기본 개요


안드로이드란 무엇인가?

안드로이드(Android)란 운영체제, 미들웨어 및 주요 응용프로그램을 포함하는 모바일 기기용 소프트웨어 모음을 의미한다. 안드로이드 소프트웨어 개발 툴킷(Android SDK)에서 초반 모양새를 볼 수 있듯, 이것은 자바 프로그래밍 언어를 사용하여 안드로이드 플랫폼 상에 응용프로그램 개발을 시작하는데 필요한 도구들과 API를 제공한다.

안드로이드 SDK는 2007년 11월 'Earkly Look' 라는 이름의 버전으로 처음 발표 되었다.
2008년 9월에 티모바일이 안드로이드 플랫폼을 탑재한 최초의 스마트폰인 G1을 발표했으며, 그후 며칠뒤 구글이 안드로이드 SDK RC 1.0버전을 발표했다.

2008년 10월에 구글은 아파치 오픈 소스 라이센스를 따르는 안드로이드 플랫폼의 소스 코드를 제작했다.

주요 기능
 - 컴포넌트의 재사용성을 지원하는 응용프로그램 프레임워크
 - 달빅 가상 기기(Dalvik virtual machine)
 - 공개소스 웹킷(WebKit) 엔진을 기반으로한 통합형 브라우저
 - 최적화된 그래픽 : OpenGL ES 1.0스팩을 기반으로 3D 지원
 - 구조적 데이터 저장소 용 SQLite
 - 범용 오디오, 비디오, 정지화상형식(jpg, png, gif등)용 미디어 지원
 - 전화기능(하드웨어 의존적)
 - 블루투스, 3G, WIFI (하드웨어 의존적)
 - 카메라, GPS, COMPASS, 가속도계 (하드웨어 의존적)
 - 이클립스용 IDE 플러그인

안드로이드 아키텍쳐

응용프로그램
안드로이드는 e메일 클라이언트, SMS 프로그램, 달력, 지도, 브라우저, 연락처 및 기타 다양한 응용프로그램을 포함한 코어 응용프로그램 한 묶음을 포함한다. 모든 응용프로그램들은 자바 프로그래밍 언어를 사용하여 제작되었다.


응용프로그램 프레임워크
개발자는 코어 응용프로그램에서 사용된 동일한 프레임워크 API를 완전하게 접근할 수 있다. 응용프로그램 아키텍처는 컴포넌트들의 재활용을 손쉽게 하도록 설계되어 있다; 어떤 응용프로그램도 자체 기능을 공개(publish)할 수 있으며, 그렇게 공개가 되면, 다른 응용프로그램들도 그 기능들을 사용할 수 있다. (프레임워크에 의해 강력하게 제한된 보안을 목적으로 한다.) 이 동일한 메커니즘을 이용하여 사용자는 컴포넌트들을 교체할 수 있다.

모든 기반 응용프로그램들은 다음의 기능들을 포함하는 서비스와 시스템의 한 묶음이다;

리스트, 그리드, 텍스트 박스, 버튼, 및 내장형 웹브라우저까지도 포함된, 응용프로그램을 제작할 때 사용할 수 있는, 풍부한 기능과 확장성을 갖고 있는 뷰(Views)의 묶음
응용프로그램이 (예를 들어, 연락처와 같은) 다른 응용프로그램의 데이터를 접근하거나 자체 데이터를 공유할 수 있도록 지원하는 컨텐트 제공자(Content Providers)
지역화된 문자열 및 그래픽, 레이아웃 파일과 같은 코드가 아닌 자원들을에 대한 접을 제공하는 자원 관리자(Resource Manager)
모든 응용프로그램이 상태 표시줄에 사용자 정의 경고문을 표시할 수 있도록 해주는 통지 관리자(Notification Manager)
응용프로그램의 활동주기를 관리하고 범용 네비게이션 백스택(backstack)을 제공하는 활동성 관리자(Activity Manager)
보다 자세한 정보를 원하거나, 간단한 응용프로그램을 통한 예제를 원한다면, 안드로이드 응용프로그램 제작하기(Writing an Android Application)를 참고한다.


라이브러리
안드로이드는 안드로이드 시스템의 다양한 컴포넌트에서 사용된 일련의 C/C++ 라이브러리가 포함되어 있다. 이 기능들은 안드로이드 응용프로그램 프레임워크를 통해 개발자들에게 노출공개되어 있다. 코어 라이브러리의 일부를 열거하자면 다음과 같다:


시스템 C 라이브러리 - 임베디드 리눅스 기반 기기 용으로 조정된, 표준 C 시스템 라이브러리(libc)의 BSD 에서 파생된 구현
미디어 라이브러리 - PacketVideo의 OpenCORE에 기반; 본 라이브러리는 MPEG4, H.264, MP3, AAC, AMR, JPG, 및 PNG를 포함하고, 다양한 대중적인 오디오/비디오 포멧과 정적 이미지 파일들의 재생과 레코딩을 지원한다.
표면 관리자(Surface Manager) - 화면 하부시스템과 다중 응용프로그램에서 결함없는 2D/3D 그래픽 계층의 복합체에 대한 접근을 관리
LibWebCore - 안드로이드 브라우저와 내장형 웹 뷰(embeddable web view) 양측에서 구동 중인 최신형 웹 브라우저 엔진 
SGL - 기반 2D 그래픽 엔진
3D 라이브러리 - OpenGL ES 1.0 API 기반으로 구현; 본 라이브러리는 (가능할 경우) 하드웨어 3D 가속기능과, 고도로 최적화된 내장된 3D 소프트웨어 레스터라이저(rasterizer) 둘 모두를 사용한다.
FreeType - 비트맵 및 벡터 폰트 렌더링
SQLite - 모든 응용프로그램에서 사용할 수 있는 강력하고 가벼운 관개형 데이터베이스 엔진


안드로이드 런타임
안드로이드는 자바 프로그래밍 언어의 코어 라이브러리에서 사용할 수 있는 대부분의 기능을 지원하는 일련의 코어 라이브러리를 포함하고 있다.


모든 안드로이드 응용프로그램은 자체 프로세스에서, 달빅 가상 기기(Dalvik Virtual Machine)의 자체 인스턴스를 갖고 구동된다. 달빅(Dalvik)이 구현되어 있어, 기기는 다중 VM을 효과적으로 구동할 수 있다. 달빅(Dalvik) VM은 최소한도로 메모리를 차지하도록 최적화된 달빅 실행 형식(Dalvik Executable format; .dex)에서 파일을 실행한다. VM은 레지스터 기반이며, 자바 언어 컴파일러를 이용하여 컴파일되고, 포함된 "dx" 도구를 이용하여 .dex 형식으로 변환된 클래스들을 구동한다.

달빅(Dalvik) VM은 쓰레드 및 저-레벨 메모리 관리와 같은 기반 기능 용 리눅스 커널에 기반한다.


리눅스 커널
안드로이드는 보안, 메모리 관리, 프로세스 관리, 네트워크 스택 및 드라이버 모델과 같은 코어 시스템 서비스 용 리눅스 버전 2.6을 기반으로 한다. 본 커널은 또한 하드웨어와 다른 소프트웨어 묶음 사이의 추상 계층으로서 동작한다.

덧글]

개발하시다가 온몸이 찌뿌둥하시면 아래 동영상을 따라 스트레칭을 한번하세요.


1. 목디스크 예방을 위한 목운동    ☞  http://jwandroid.tistory.com/192 

2. 손목터널증후군 손목스트레칭으로 예방합시다.     ☞  http://jwandroid.tistory.com/193

3. 개발자 여러분 허리를 세우세요 - 척추체조 1번     ☞  http://jwandroid.tistory.com/194

4. 개발자 여러분 허리를 세우세요 - 척추체조 2번     ☞  http://jwandroid.tistory.com/195

5. 개발자 여러분 허리를 세우세요 - 척추체조 3번     ☞   http://jwandroid.tistory.com/196

6. 개발자 여러분 허리를 세우세요 - 척추체조 4번     ☞  http://jwandroid.tistory.com/197