안드로이드 구조, 운영체제의 중요 요소!
안뇽하세요 꼬로미에욤
안드로이드 프로그래밍과 개발하기에 앞서 미리 알아두어야 할
안드로이드 구조에 대해서 살펴봅니다~
안드로이드(소프트웨어 스택, software stack)
- 운영체제, 미들웨어, 핵심 애플리케이션을 모두 포함하는 모바일 플랫폼
리눅스 커널(linux kernel)
리눅스를 사용해 보안, 메모리관리, 프로세스 관리, 네트워크 장치 드라이버와 같은 시스템 서비스를 제공합니다
리눅스 커널은 하드웨어와 소프트웨어 스택사이에 추상화 계층으로 동작
안드로이드 런타임(Android Runtime)
자바의 코어 라이브러리와 달빅 가상머신으로 구성되는 안드로이드 런타임
애플리케이션은 리눅스의 하나의 프로세스로 실행되며 프로세스는 각 자신만의 달빅 가상 머신을 가집니다
달빅 가상 머신은 레지스터 기반이며 자바 컴파일러에 의해 컴파일된 클래스들은 .dex 형식으로 변환 후 실행합니다
라이브러리(libraries)
안드로이드에서도 다양한 C/C++ 라이브러리를 포함합니다
- 시스템 C 라이브러리 : BSD기반 표준 C 시스템 라이브러리 제공
- 미디어 라이브러리 : MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 등 지원
- Surface manager : 디스플레이 서브 시스템 관리 및 여러 애플리케이션의 레이어들을 끊어짐 없이 합성
- LibwebCore : 웹 브라우저를 구현하는 첨단 웹 브라우저 엔진
- SGL : 기본 2D 그래픽 엔진
- 3D 라이브러리 : OpenGL ES 1.0 API 기반 라이브러리
- FreeType : 비트맵, 벡터 글꼴 렌더링 제공
- SQLite : 데이터베이스 엔진
애플리케이션 프레임워크(application framework)
개발자들을 위한 API(Application Programming Interface)를 제공하는 애플리케이션 프레임워크
프레임워크를 통해 하드웨어 장치, 위치 정보접근, 병렬처리기능, 알람설정기능, 상태 표시줄 알림 등 기능을 사용할 수 있습니다. 컴포넌트의 재사용을 쉽게 설계되었으며 모든 애플리케이션은 자신의 기능을 다른 애플리케이션에 개방이 가능하며 기능을 사용할 수도 있습니다
- 확장 가능한 뷰(View) 제공
- 콘텐트 제공자(content provider)
- 리소스관리자(resource manager)
- 통지 관리자(notification manager)
- 액티비티 관리자(activity manager)
애플리케이션(application)
안드로이드에서는 기본적인 애플리케이션을 가지고 있습니다
(전화, 메시지, 달력, 지도, 이메일, 브라우저, 전화번호부)
자바프로그래밍으로 자바언어를 사용해 개발되며 모든 애플리케이션에서 동일한 라이브러리를 사용합니다
- 구조 중 사용자에게 많은 관심이 쏠리는 애플리케이션으로 안드로이드는 마켓을 통해
많은 애플리케이션이 유통되는 환경을 구축하며 운영하고 있습니다
요론 사실들이!ㅎㅎㅎㅎ
역시 기초튼튼이 정말 중요한 것 같아요
다음은 안드로이드의 핵심 개념에 대해서 포스팅 하겠습니다