본문 바로가기

Programming/Android

What is android??


안드로이드는 모바일 디바이스를 위한 소프트웨어Stack 입니다.
안드로이드 SDK를 통해 Java 언어를 이용하여 Application을 개발합니다.

Android Architecture



Applications


안드로이드는 E-mail, SMS, Calender, browser, Contacts 등과 같은 Application을 탑재하고 있습니다. 모든 Application은 Java 로 작성되어있습니다.
  • 모든 Application은 가상머신에 대한 자신의 인스턴스를 가지고, 자신의 프로세스 내에서 실행된다.
  •  모든 Application은 동등한 입장으로 실행된다. 즉, 기본 시스템 대신, 직접만든 시스템을 초기화면으로 사용가능하다.


Applications Framework


말 그대로 번역하면 "사용할 수 있는 틀"이다. 기존에 만들어진 틀을 이용해 개발자들이 보다 편리하고 고성능의 Application을 개발할 수 있도록 지원하는 역할을 한다.

  • 개발자들을 위한 자원들이다. 이것을 통해 모든 Application을 개발할 수 있다.
  • User를 위한 UI 제작
  • data에 접근하기 위한 Content Provider가 있다.
  • 알림, 라이프사이클 관리
  • 여러가지 보안제약이 따른다.


Libraris

C,C++로 코딩되어 있고, 각 회사마다 사용되는 하드웨어를 지원하기 위해 업체에서 미리 스마트폰에 설치된다.

  • 라이브러리는 Applications Framework를 통해 개발자들에게 제공된다
  • 안드로이드는 임베디드 리눅스 기반의 디바이스에 적합하도록 표준 C시스템 라이브러리를 제공한다.
  • 미디어 라이브러리를 통해 여러가지 오디오, 비디오 포맷을 제공한다.
  • 그외 SurfaceManager, LibWebCore, SQLite 등이 있다.


Android Runtime

Java 프로그래밍 언어의 핵심 라이브러리에서 사용가능한 기능들을 포함하고 있다.  Core Library를 통해 Java의 핵심 라이브러리 기능을 사용할 수 있다.

* Runtime : 컴퓨터 프로그램이 실행되고 있는 동안의 동작을 말한다.

  • Dalvik VM
    • Java 컴파일된 클래스 실행
    • Dalvik 가상머신의 실행 파일인 dex 포맷을 사용한다.
    • Threading과 Low-level 메모리 관리는 Linux Kernel에 의존한다.
  • Core Library
    • Android에서 Java 프로그래밍을 위한 핵심 라이브러리이다.


Linux Kernel

안드로이드는 보안, 메모리 관리, 프로세스 관리, 네트워킹 등의 시스템 서비스를 제공한다.
즉, 부팅, 파일시스템, 하드웨어 제어를 위한 디바이스 드라이버 등이 여기에 해당한다.