Andorid Platform Architecture에 대하여 알아본다.
Andorid Platform Architecture
– Android Architecture는 그림과 같이 6 계층으로 분류.
– Android는 오픈 소스 Linux 기반 소프트웨어이며, 다양한 장치와 폼 팩터를 지원.
– 최적으로 사용하기 위해 Architecture 숙지 필요.
System Application
– 기본으로 제공되는 Application.
– System Setting Application을 제외하면, 기본 제공되는 Application이 아닌 것을 사용해도 무방.
– Application에 Access 가능한 주요 기능을 제공하기 위한 용도로도 사용(ex. App이 SMS 메시지를 제공하고자 할 경우, 직접 Build를 진행하지 않고, 이미 설치된 Application 호출하여 제공)
– 기존 설치 Application 뿐만 아니라 사용자가 Download한 Application 또한 이 Layer에 설치됨.
– Framework 제공 Class와 Service로 Android Runtime 내에서 실행됨
Java API Framework
– Android OS의 전체 기능은 Java 언어로 작성된 API를 통해 Access가능.
– API는 핵심 모듈 식 시스템 구성 요소 및 서비스 재활용을 단순화하여 Android Application을 제작하는데 필요한 Building Block을 구성.
– Content Providers : 표준 인터페이스(A Process의 Data와 B Process의 Code 연결)
– View System – 화면의 직사각형 영역을 차지, 그리기 및 이벤트 처리 담당.
– Managers : 각 영역별 관리(Activity – Application Life Cycle / Notification – 알림 영역 / Resource – 자원 영역(제공, 액세스, 런타임, 현지화, XML) / Telephony – 전화, 통신 / Window – 창 / Package – 현재 장치에 설치된 Package 종류 / Location – 시스템 위치)
Native C/C++ Libraries
– Android 코드 작성을 위해 C or C++ 기반의 기본 Library 필요.
– ART, HAL 등의 Android 핵심 구성 요소가 기본 Library에서 Build 진행되어 중요함.
– 개발자는 Java Framework API를 사용하여 기본 Library기능을 Application에 노출하거나, OpenGL API를 통해 2D 및 3D 그래픽 그리기 및 조작을 지원 가능.
– C or C++ 코드가 필요한 Application을 개발하는 경우 android의 경우 Android NDK를 사용하여 가능.
– Media Library – Audio 및 Video 형식의 재생 및 녹음 지원, SGL 및 OpenGL은 모든 언어, Platform에서 2D 및 3D 컴퓨터 그래픽에 사용됨.
– SQLite는 Database 지원, FreeType은 글꼴을 지원.
– Web-Kit 이 Open Source Web Browser Engine으로 웹 콘텐츠를 표시하고, 페이지 로딩을 단순화하는 모든 기능 제공.
– SSL(Secure Sockets Layer )은 웹 서버와 웹 브라우저 간에 암호화된 링크를 설정하는 보안 기술.
ART(Android RunTime)
– Android 5.0Lollipop(API Level 21)부터 기본으로 Android RunTime을 제공
– Android 기기는 자체 Process와 ART에서 실행.
– ART는 메모리가 부족한 장치의 여러 VM을 실행하도록 설계. DEX파일 실행을 통해 Process 완료. 최소한의 메모리 사용 보장을 위해 바이트코드 형식에 의존. db Tool을 이용하여 Java소스를 DEX바이트 코드로 Compile 가능.
– AOT(Ahead-of-Time) 및 JOT(Just-In-Time) Compile을 제공하고, 최적화된 GC(Garbage Collection)를 제공. DEX파일을 보다 간결한 기계어로 변환하고, 더 나은 디버깅 지원 제공.
HAL(Hardware Abstraction Layer)
– HAL은 상위 수준의 Java API Framework에 기기 하드웨어 기능을 노출하는 표준 인터페이스를 제공.
– HAL은 여러 Library 모듈로 구성되어 있음.
– Camera or Bluetooth 모듈과 같은 특정 유형의 하드웨어 구성 요소를 위한 인터페이스를 구현.
Linux Kernel(장치 드라이버,메모리 관리, 공정 관리)
– Android Platform Architecture는 Linux Kernel 위에 구축(ex. ART는 Linux Kernel에 의존.)
– Threading과 같은 기본 기능 및 하위 수준의 메모리 관리에 Kernel을 사용.
– Kernel을 사용하여 보안을 강화하고, Kernel용 하드웨어 드라이버를 Build 가능.
– Process 관리와 필요할 때마다, Process에 Resource 할당.
– Network 통신을 Stack을 이용하여 효과적으로 처리.
Reference
– https://www.guru99.com/android-architecture.html
– https://www.tutorialspoint.com/android/android_architecture.htm
– https://www.geeksforgeeks.org/android-architecture/
Great article! I appreciate the clear and insightful perspective you’ve shared. It’s fascinating to see how this topic is developing. For those interested in diving deeper, I found an excellent resource that expands on these ideas: check it out here. Looking forward to hearing others’ thoughts and continuing the discussion!