Android(안드로이드) 1. 안드로이드 구조

차선호·2023년 4월 4일
0

Android

목록 보기
1/5
post-thumbnail

안드로이드 플랫폼 구조


안드로이드 플랫폼 아키텍처

  • Linux Kernel

    • 보안, 메모리 관리, 프로세스 관리, 파일 시스템 관리, 파워 관리, 네트워크 스택, 하드웨어 드라이버 등 하드웨어를 지원
  • HAL

    • Hardware Abstraction Layer(하드웨어 추상화 계층)

      • 상위 수준의 Java API 프레임워크에 기기 하드웨어 기능을 노출하는 표준 인터페이스를 제공

      • HAL은 여러 라이브러릴 모듈로 구성되어 있으며, 카메라 또는 블루투스 모듈과 같은 특정 유형의 하드웨어 구성 요소를 위한 인터페이스를 구현

      • 프레임워크 API가 기기 하드웨어에 엑세스하기 위해 호출을 수행하면 Android 시스템이 해당 하드웨어 구성 요소에 대한 라이브러리 모듈을 로드

  • Native C / C++ Libraries

    • 안드로이드 프레임워크에서 필요한 C와 C++ 라이브러리를 제공
  • Android Runtime

    • 코어 라이브러리 지원, Dalvik | ART Virtual Machine으로 안드로이드 애플리케이션 실행환경을 제공
  • Java API Framework

    • 안드로이드 어플리케이션 개발 시 필요한 API를 제공
  • System Apps

    • Email 클라이언트, SMS 프로그램, 달력, 지도, 브라우저 등의 코어 어플리케이션을 제공

App Components

  • 컴포넌트란

    • 컴포넌트는 앱 내에서의 독립적인 실행 단위(구성 단위)

      • 컴포넌트 여러 개를 조합하여 하나의 앱을 만듦

      • 일반 클래스와 달리 생명주기를 안드로이드 시스템이 관리

      • 독립적인 실행 단위라는 말은 직접 코드로 결합해서 실행하는 것이 아니라 컴포넌트 간에 Intent라는 특정 클래스를 매개로 하여 결합하지 않은 상태로 실행하는 구조

    • Main 함수 같은 애플리케이션의 진입 지점이 따로 없음

      • 런처의 아이콘을 클릭해서 실행하면, 최초 시작인 경우 메인 화면이 보이게 됨
      • 알림을 눌러서 진입하면, 이때는 해당 알림이 원하는 화면이 보이게 됨
  • 컴포넌트 종류

    • Acitivity
      • UI를 구성하기 위한 컴포넌트
    • Service
      • UI 없이 백그라운드에서 수행하는 컴포넌트
    • Broadcast Receiver
      • 이벤트로 수행되는 컴포넌트(방송을 수신하는 컴포넌트)
    • Content Provider
      • 어플리케이션 간 데이터를 공유하기 위한 컴포넌트
    • 이 4가지 컴포넌트는 서로 연관성이 하나도 없고 완전히 별개로 동작한다.


DVM, ART


DVM(Dalvik Virtual Machine)

  • 초기 안드로이드 런타임 시 사용됨

  • Android 2.2 이후 JIT 컴파일러로 처음 적용됨

    • JIT는 Just In Time으로 자주 사용되는 부분에 대해 미리 컴파일해 기계어로 해석해놓음으로써 성능을 향상시키고 실행시에 인터프리팅을 시작함

ART(Android Run Time)

  • AOT 컴파일러 사용

    • AOT는 Ahead On Time으로 설치 시점에 이미 컴파일을 완료하여 기계어로 해석을 끝내고 실행 시에는 해석 과정 없이 곧바로 기계어로 실행
  • Android 4.4(API 19)에서 처음으로 등장, 도입

    • 이때는, DVM과 선택적 사용
  • Android 5.5(API 21) 이후 기본 런타임으로 지정

  • Android 7.0 이후로는 AOT+JIT

    • 미리 기계어로 컴파일 해놓고 실행시에는 기계어를 실행
profile
dkssud!

0개의 댓글