티스토리 뷰

깡쌤의 말에 따르면 앱 개발자 관점에서 안드로이드 플랫폼의 아키텍처를 자세히 이해하거나 응용할 필요는 없다고 한다. 다만 안드로이드 플랫폼이 어떻게 설계되었는지, 앱이 어떤 환경에서 수행되는지 등 상식 수준에서만 알아두면 좋다고 하여 이렇게 간략하게 나마 정리하려고 한다.


안드로이드 소프트웨어 스택(출처:https://developer.android.com/guide/platform?hl=ko)

 

  • 안드로이드 플랫폼은 리눅스 커널 기반이다.
  • HAL(Hardware Abstraction Layer)은 자바 API 프레임워크에 하드웨어 기능을 이용하는 표준 인터페이스를 제공한다. 자바 API 프레임워크에서 하드웨어 기기(카메라, 블루투스 등)를 이용하기 위한 코드가 실행되면 내부적으로 HAL의 라이브러리 모듈이 로딩되어 처리된다.
  • 안드로이드 런타임(Android Runtime)은 ART 가상 머신을 이용하여 그 위에 일반 애플리케이션 개발 시 이용할 수 있는 자바 API 프레임워크를 제공한다.

안드로이드 런타임(ART)

  • 자바로 개발된 다른 애플리케이션은 런타임 때 JVM이 수행하지만, 안드로이드의 VM은 ART(Android Runtime)을 이용한다.
  • 안드로이드 버전 5.0(API 레벨 21) 이상을 실행하는 기기의 경우, 각 앱이 자체 프로세스 내에서 자체 ART 인스턴스로 실행된다.(API 레벨 21 이전에는 Dalvik이라고 한다.)
  • ART는 DEX(Dalvik Executable) 파일을 실행하여 저용량 메모리 기기에서 여러 가상 머신을 실행하도록 작성되었다. DEX 파일은 안드로이드 용으로 특별히 설계된 바이트 코드 형식으로, 최소 메모리 공간에 맞게 최적화 되어 있다.
 

JVM, DVM, ART 이해하기 | 찰스의 안드로이드

안드로이드를 처음 막 배우기 시작한 꼬꼬마시절 왜 구글이 왜 자바를 선택했고, 자바의 바이트코드가 무엇이며, 왜 폰에서 Dalvik과 ART를 선택하라는 거지??? 궁금했지만 누구하나 시원하게 알려

www.charlezz.com

  • 자바로 개발된 개발자 코드는 컴파일러(compiler)가 자동으로 DEX 파일로 변경하며, 런타임 때 ART가 이 DEX 파일을 해석하여 수행하는 구조이다.

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

  • ART 및 HAL 등의 많은 핵심 Android 시스템 구성 요소와 서비스가 C / C++로 작성된 네이티브 라이브러리를 필요로 하는 네이티브 코드를 기반으로 빌드되었다.
  • Android 플랫폼은 Java 프레임워크 API를 제공하여 이러한 일부 네이티브 라이브러리의 기능을 앱에 노출한다.

Java API 프레임워크

  • 앱을 개발할 때 안드로이드 앱 개발자 관점에서 가장 중요한 요소는 '자바 API 프레임워크'다. 간단히 말해, 개발자가 안드로이드 앱을 만들 때 이용하는 표준 라이브러리라고 생각하면 된다.
  • 대표적인 기능
  1. 기능이 풍부하고 확장 가능한 View 시스템 : ListView, Grid, TextView, Button 등 앱의 UI를 빌드하는 데 사용
  2. Resource Manager : 로컬라이징 된 strings, drawable 등과 같은 코드가 아닌 리소스에 대한 액세스를 제공
  3. Notification Manager : 모든 앱이 상태 표시줄에 사용자 지정 알림을 표시할 수 있도록 지원
  4. Activity Manager : 앱의 수명 주기를 관리하고 공통 Navigation back stack을 제공
  5. Content Provider : 다른 앱의 데이터에 접근 가능

시스템 앱(System Apps)

  • 안드로이드는 이메일, SMS 메시지, 캘린더, 인터넷 브라우저, 연락처 등등 하나의 앱 세트를 제공한다.
  • 이런 기본적인 시스템 앱은 안드로이드에서 제공하는 앱과 사용자가 직접 다운받아서 사용하는 앱을 구분두지 않아 서드 파티 앱을 기본 시스템 앱으로 지정할 수 있다.

사실상 내가 다룰 부분은 Java API 프레임워크나 시스템 앱이 대부분이겠지만 안드로이드라는 플랫폼 밑단에서 어떻게 동작하는지 알아두면 좋을 것 같아 간략하게 정리해봤다.

 

 

플랫폼 아키텍처  |  Android 개발자  |  Android Developers

Android is an open source, Linux-based software stack created for a wide array of devices and form factors. The following diagram shows the major components of the Android platform. The foundation of the Android platform is the Linux kernel. For example…

developer.android.com

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함