안드로이드 플랫폼 알아보기

김태영·2024년 5월 28일
0

TIL

목록 보기
17/70
post-thumbnail

오늘 공부한 것

- 알고리즘 문자열 나누기 문제 풀기
- 안드로이드 플랫폼 더 자세히 알아보기
- 노코드로 수익형 AI 앱 만들기 3주차 강의 듣기

안드로이드 플랫폼

  • 안드로이드 플랫폼은 리눅스 운영체제 안에서 리눅스와 상호작용하며 동작
  • 전체 아키텍처 위쪽에 안드로이드가 실행되는 런타임 영역이 존재

Linex Kernel

  • 안드로이드 플랫폼의 기초
  • 리눅스 커널을 사용하면 안드로이드의 주요 보안 기능을 활용할 수 있다.
  • 안드로이드 런타임은 스레드나 메모리 관리 같은 기본 기능에 리눅스 커널을 사용한다.
  • 각종 드라이버 제공 (ex. 오디오 드라이버, 키패드 드라이버, ..)

하드웨어 추상화 계층, HAL

  • 리눅스 커널에서 제공하는 드라이버들이 통제하는 하드웨어들이 포함 되어있다.
  • JAVA API 프레임워크에 기기 하드웨어 기능을 노출하는 표준 인터페이스를 제공
  • 여러 라이브러리 모듈로 구성, 각 모듈은 하드웨어 구성 요소(카메라, 블루투스, ..)를 위한 인터페이스를 구현
  • 프레임워크 API가 기기 하드웨어에 접근하기 위해 호출하면, 해당 하드웨어 구성 요소에 대한 라이브러리 모듈을 로드한다.

Android 런타임, ART

  • 안드로이드 버전 5.0 이상의 기기는 각 앱이 자체 프로세스 내에서 자체 안드로이드 런타임 인스턴스로 실행
  • DEX(Dalvik Executable) 형식 파일을 실행해 저용량 메모리 기기에서 여러 가상 머신을 실행하도록 작성
  • DEX 파일은 안드로이드용으로 설계된 바이트 코드 형식, 최소 메모리 공간에 맞게 최적화 되어 있다.
  • ART 주요 기능
    • AOT(Ahead-Of-Time) 및 JIT(Just-In-Time) 컴파일
    • 최적화된 가비지 컬렉션
    • Android 9 이상에서는 앱 패키지의 DEX 파일을 더 간결한 기계어 코드로 변환
    • 향상된 디버깅 지원 기능

Native C/C++ 라이브러리

  • 안드로이드 시스템 구성요소 및 서비스(ex. ART, HAL)는 C, C++로 작성된 네이티브 라이브러리가 필요한 네이티브 코드에서 빌드된다.
  • Java 프레임워크 API를 제공해 일부 네이티브 라이브러리의 기능을 앱에 노출

Java API 프레임워크

  • 안드로이드 운영체제는 자바 언어로 작성된 API를 통해 접근할 수 있다.
  • 다음과 같은 기본 요소를 구성한다.
    • 기능이 풍부하고 확장 가능한 뷰 시스템: 앱의 UI를 빌드하는 데 사용한다.
    • 리소스 관리자: 현지화된 문자열, 레이아웃 파일과 같은 코드가 아닌 리소스에 대한 접근을 제공한다.
    • 알림 관리자: 상태 표시줄에 맞춤 알림을 표시할 수 있도록 지원한다.
    • 활동 관리자: 앱의 생명 주기 관리, 공통 탐색 백 스택(뒤로가기)을 제공한다.
    • 콘텐츠 제공자: 앱이 다른 앱의 데이터에 접근하거나 자체 데이터를 공유할 수 있게 한다.

시스템 앱

  • 기본적으로 포함된 앱
  • 사용자를 위한 앱으로도 작동하지만, 개발자가 자체 앱에서 액세스 할 수 있는 주요 기능을 제공하기 위해 작동한다.
    • ex. 메시지를 전달할 때 이미 설치된 메시지 앱을 호출해 전송할 수 있다.

플랫폼 버전과 API 레벨

  • 플랫폼 버전과 API 레벨은 별개
  • API란? 개발자에게 안드로이드 플랫폼의 기능을 사용할 수 있게 제공하는 도구
  • 현재 가장 높은 점유율은 API 레벨 21, 롤리팝 버전 이상을 사용하는 디바이스 — 98.8%
  • 참고 - 매년 새로운 버전의 안드로이드가 출시 되지만, 사용자가 옮겨 가는 데에 몇 년의 시간이 소요 됨. 따라서 항상 최신 버전에 맞춰서 개발할 필요 X

회고

안드로이드 플랫폼 아키텍처를 하나도 모르겠어서 하나씩 알아보았다. 신기했던 건 시스템 앱이 그저 사용자를 위해 존재하는 게 아니라는 것이다! 전화를 하려면 기능을 따로 구현해야 되는 줄 알았는데 아니었구나..

솔직히 머리에 다 들어가진 않았지만, 앱 개발도 해보고 오늘 정리한 글도 읽다보면 언젠가 다 들어가지 않을까?

profile
화이팅

0개의 댓글