안드로이드 플랫폼 구조

kosdjs·2025년 5월 28일

Android

목록 보기
1/29
  • Android는 다양한 기기와 폼 팩터에 사용할 수 있도록 제작된 Linux 기반의 오픈 소스 소프트웨어 스택, 아래 그림과 같은 구조로 구성됨

Linux 커널

  • Android 플랫폼 기초는 Linux 커널, 예시로 Android 런타임(ART)는 스레딩 및 하위 수준의 메모리 관리와 같은 기본 기능에 Linux 커널을 사용

  • Linux 커널을 사용해 Android에서 주요 보안 기능 활용 가능 및 기기 제조업체가 잘 알려진 커널용 하드웨어 드라이버를 개발 가능

    Android에서의 주요 보안 기능
    https://source.android.com/docs/security/overview/kernel-security?hl=ko

하드웨어 추상화 계층(HAL)

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

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

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

Android 런타임

  • Android 버전 5.0(API 수준 21) 이상을 실행하는 기기의 경우, 각 앱이 자체 프로세스 내에서 자체 Android 런타임(ART) 인스턴스로 실행

  • DEX 형식 파일을 실행하여 저용량 메모리 기기에서 여러 가상 머신을 실행

    • DEX(Dalvik Executable) 파일은 Android용으로 특별히 설계된 바이트 코드 형식
  • ART의 주요 기능

    • AOT(Ahead-Of-Time) 및 JIT(Just-In-Time) 컴파일
    • 최적화된 가비지 컬렉션(GC)
    • Android 9 (API 수준 28) 이상에서는 앱 패키지의 DEX 파일을 더 간결한 기계어 코드로 변환
    • 전용 샘플링 프로파일러, 상세 진단 예외 및 오류 보고, watchpoint를 설정하여 특정 필드를 모니터링할 수 있는 기능을 비롯한 향상된 디버깅 지원 기능
  • Android 버전 5.0(API 수준 21) 이전 버전에서는 Dalvik이 Android 런타임

    • 앱이 ART에서 잘 실행되면 Dalvik에서도 제대로 작동할 수 있지만 그 반대의 경우 제대로 작동하지 않을 수 있음
  • Android에는 Java API 프레임워크가 사용하는 몇 가지 자바 8 언어 기능을 포함하여 대부분의 자바 프로그래밍 언어 기능을 제공하는 일련의 핵심 런타임 라이브러리도 포함됨

네이티브 C/C++ 라이브러리

  • ART 및 HAL과 같은 많은 핵심 Android 시스템 구성요소 및 서비스는 C 및 C++로 작성된 네이티브 라이브러리가 필요한 네이티브 코드에서 빌드됨

  • Android 플랫폼은 이러한 일부 네이티브 라이브러리의 기능을 앱에서 사용할 수 있게 Java 프레임워크 API를 제공

    • 예시로, Android 프레임워크의 Java OpenGL API를 통해 OpenGL ES에 액세스하여 앱에서 2D 및 3D 그래픽을 그리고 조작할 수 있는 지원 기능을 추가함
  • C 또는 C++ 코드가 필요한 앱을 개발하는 경우에는 Android NDK를 사용하여 네이티브 코드에서 직접 이러한 몇몇 네이티브 플랫폼 라이브러리에 액세스 가능

Java API 프레임워크

  • Android OS의 전체 기능 세트는 자바로 작성된 API를 통해 액세스 가능, 이러한 API는 핵심 모듈식 시스템 구성요소 및 서비스 재사용을 단순화하여 Android 앱을 제작하는 데 필요한 기본 요소를 구성함

  • 앱의 기본 구성 요소

    • 뷰 시스템(View System) : 목록, 그리드, 텍스트 상자, 버튼 및 삽입 가능한 웹브라우저를 포함하여 앱의 UI를 빌드하는 데 사용할 수 있음
    • 리소스 관리자(Resource Manager) : 현지화된 문자열, 그래픽 및 레이아웃 파일과 같은 코드가 아닌 리소스에 대한 액세스 제공
    • 알림 관리자(Notification Manager) : 모든 앱이 상태 표시줄에 맞춤 알림을 표시할 수 있도록 지원
    • 활동 관리자(Activity Manager) : 앱의 수명 주기를 관리하고 공통 탐색 백 스택을 제공
    • 콘텐츠 제공자(Contents Provider) : 앱이 연락처 앱과 같은 다른 앱의 데이터에 액세스하거나 자체 데이터를 공유할 수 있도록 함
  • 개발자는 Android 시스템 앱이 사용하는 것과 동일한 프레임워크 API에 대한 전체 액세스 권한을 가짐

시스템 앱

  • 이메일, SMS 메시징, 캘린더, 인터넷 검색, 연락처 등의 기본 앱 및 사용자가 설치하는 앱

  • 기본 앱과 사용자가 설치하는 앱을 구분하지 않아 타사 앱을 기본 웹 브라우저, SMS 메신저 등으로 사용 가능

  • 시스템 앱은 사용자를 위한 앱으로도 작동하고 개발자가 자체 앱에서 액세스할 수 있는 주요 기능을 제공하기 위해 작동, 예시로 앱에서 SMS 메시지를 전달하도록 하려면 이 기능을 직접 빌드하지 않고 이미 설치된 SMS 앱을 호출하여 지정한 수신자에게 메시지를 전송할 수 있음

원문
https://developer.android.com/guide/platform?hl=ko

0개의 댓글