Android 아키텍처에 대해 알아보겠습니다.
이 다이어그램에서 위에서 아래로 볼 수 있듯이 A
ndroid 시스템 아키텍처는 실패로 나뉩니다.
먼저 시스템 앱과 일반 애플리케이션을 포함하는 애플리케이션 계층이 있고, 그 다음에는
이러한 모든 관리자, 활동 관리자, 위치 관리자, 패키지 관리자 등을 포함하는 애플리케
이션 프레임워크 계층 또는 Java API 프레임워크 계층이 있습니다. 그리고 네이티브
C++ 라이브러리와 안드로이드 런타임을 포함하는 시스템 런타임 레이어가 있습니다.
그 다음에는 오디오, 블루투스 카메라 센서 등에 필요한 로직이 포함된 하
드웨어 추상화 계층 또는 선체가 있습니다. 그리고 가장 아래에는 Linu
x 커널 계층이 있지만 오디오 바인더, 디스플레이, iPad, Bluet
ooth 등을 위한 드라이버가 있고 가장 아래에는 전원 관리가 있습니다.
이것이 바로 안드로이드 아키텍처의 다섯 가지 계층입니다.
이러한 각 구성 요소에 대해 자세히 알아보겠습니다.
애플리케이션 계층에는 기본 제공 애플리케이션과 비시스템 수준 애플리
케이션이 모두 존재하지만 기본적으로 사용자와 직접 상호 작용하고 책
임을 지며 일반적으로 Java 또는 Kotlin으로 개발됩니다.
그리고 이러한 앱은 대부분 애플리케이션 개발자가 개발한 앱이며, 이후 세션에서 이러한
시스템 앱이나 스톡 앱을 살펴보기 위해 AOSP의 일부로 제공되는 스톡 앱도 있습니다.
애플리케이션 프레임워크 계층은 개발자에게 애플리케이션을 개발하는 데 필요한 API를 제공합니다.
이 계층은 Java로 작성되며 Java 프레임워크라고도 할 수 있습니다.
하지만 요즘에는 Kotlin으로 작성된 프레임워크 코드도 있습니다.
우리는 보통 이 특정 계층에서 제공하는 API를 호출할 수
있는 애플리케이션, 즉 안드로이드 애플리케이션을 개발합니다.
애플리케이션 계층에서 제공하는 주요 구성 요소를 살펴보겠습니다.
먼저 활동 관리자가 있는데, 활동 관리자는 주
로 각 애플리케이션의 수명 주기를 관리합니다.
따라서 각 애플리케이션은 서로 다른 활동 또는 조각으로 구축됩니다.
따라서 각 애플리케이션 또는 애플리케이션 내의 각 활동의
수명 주기를 관리하는 것은 활동 관리자의 책임입니다.
다음은 위치 관리자입니다.
위치 관리자는 지리적 위치 및 위치 기능 서비스를 제공합니다.
예를 들어 지도는 위치 관리자를 사용하여 디바이스의 현재 위치를 가져옵니다.
패키지 관리자, 패키지 관리자, 관리자, Android 시스템에 설치된 모든 애플리케이션.
기본적으로 설치, 제거 및 권한 부여를 담당합니다.
Android 시스템에 설치된 기타 애플리케이션 알림 관리자 알림 관리자를 사용하
면 애플리케이션이 상태 표시줄에 사용자 지정 프롬프트 정보를 표시할 수 있습니다.
예를 들어 Gmail 앱에서 이메일을 받으면 알림 관리자를
통해 이메일이 수신되었다는 메시지가 알림창에 표시됩니다.
그리고 리소스 관리자가 등장합니다.
현지화된 두 개의 문자열, 그림, 레이아웃 파일, 색상 파일 등 애플리케이션이
사용하는 다양한 비핵심 리소스를 제공합니다. 따라서 안드로이드 애플리케이션 개발
배경이 있다면 안드로이드 애플리케이션을 개발할 때 사용하는 문자열 그림, 레이
아웃 파일, 색상 파일, 종료 색상에 대한 현지화를 확실히 알고 있을 것입니다.
따라서 이를 유지하는 것은 리소스 관리자의 책임입니다.
그런 다음 전화 통신 관리자가 등장합니다.
SIM 관리 및 네트워크 관리 등과 같은 모든 모바일 장치 기능을 관리합니다.
그런 다음 창 관리자, 창 관리자 관리자, 열려 있는 모든
창이 있으므로 각 활동은 기본적으로 모든 창으로 구축됩니다.
따라서 Windows 관리 시스템에 대해 설명하는 다음
세션에서 Windows에 대해 더 자세히 알아보겠습니다.
콘텐츠 제공업체와 제공업체는 시스템 내의 여러
애플리케이션 간에 데이터를 공유할 수 있습니다.
보기 시스템 보기 시스템은 애플리케이션의 필수 새 구성 요소를 구축하는 일을 담당합니다.
따라서 기본적으로 레이아웃을 부풀리는 역할을 하며, 이러한 레이아웃에는 여러 유형의 보기가 있습니다.
뷰 시스템은 기본적으로 이러한 다양한 뷰를 화면에 렌더링하는 역할을 담당합니다.
시스템 런타임 라이브러리 계층은 두 부분으로 나뉩니다.
C++ 라이브러리 및 Android 런타임 라이브러리.
이에 대해서는 별도로 논의하기로 하고 먼저 C++ 라이브러리를 살펴보겠습니다.
C++ 라이브러리는 다양한 안드로이드 시스템 구성 요소에서 사용할 수 있으
며 애플리케이션 프레임워크를 통해 개발자에게 서비스를 제공할 수 있습니다.
따라서 애플리케이션 전체에서 사용하는 모든 비자는 이 C++ 라이브러리에 의존합니다.
다음은 C++ 라이브러리의 몇 가지 예입니다.
첫 번째는 임베디드 시스템용 OpenGL ES OpenGL입니다.
따라서 기본적으로 임베디드 디바이스를 위해 특별히 설계된 3D 드로잉 함수 라이브러리입니다.
그리고 립시가 있습니다.
Lipsy는 기본적으로 BSD에서 상속된 표준 C 시스템 함수 라이브러리입니다.
BSD는 버클리 소프트웨어 배포의 약자로, 특히 임베디
드 Linux 기반 장치에 맞게 맞춤화되어 있습니다.
그리고 미디어 프레임워크가 있습니다.
여기에는 MP, 3, MP, 4 등과 같이 일반적으로 사용되는 다양한 오디오 및 비디오 형
식의 녹음과 재생을 지원하는 라이브러리가 포함되어 있습니다. 그리고 A 라이트가 있습니다.
경량 관계형 데이터베이스 엔진입니다.
역시 모바일 디바이스용으로 개발된 경량 솔루션입니다.
그리고 여전히 단순한 그래픽 라이브러리를 의미합니다.
이것이 바로 안드로이드의 기본 2D 그래픽 렌더링 엔진입니다.
그리고 SSL이 있습니다.
보안 소켓 계층은 네트워크 통신에 보안과 데이터 무결성을 제공하는
보안 프로토콜이지만, 이는 매우 일반적인 보안 프로토콜입니다.
마지막으로 무료 유형이 있습니다.
이는 기본적으로 다양한 종류의 휴대폰을 관리하기 위한 것입니다.
따라서 이것은 기본적으로 휴대용 전화 엔진입니다.
다양한 글꼴 파일 형식에 액세스할 수 있는 통합 인터페이스를 제공합니다.
안드로이드 시스템 런타임 레이어 런타임 라이브러리에서 찾을 수 있는 주요 C++ 라이브러리
는 코어 라이브러리와 코드 라이브러리에서 가장 많이 제공하는 안드로이드 원으로 나뉩니다.
자바 언어 중 Gore 라이브러리는 개발자가 자바 언어를 사용하여
안드로이드 애플리케이션을 작성할 수 있도록 지원하는 기능을 합니다.
따라서 코드 라이브러리의 목적은 단순히 라이브러리 함수라는 Java 언어를 제공하는 것입니다.
이제 Dalvik 가상 머신 또는 RPA와 관련하여 자동화를 Java 가상 머신과 비교할 수
있지만 John Dalvik 가상 머신은 모바일 장치에 맞게 특별히 맞춤화되어 있습니다.
제한된 메모리에서 여러 가상 머신 인스턴스를 동시에 실행할 수 있으며
, 각 동적 애플리케이션은 독립적인 Linux 프로세스로 실행됩니다.
따라서 별도의 프로세스가 있기 때문에 가상 머신이 충돌할 때 모든 프로그램이 종료되는 것을 방지합니다.
따라서 프로세스가 다르다는 점이 가장 큰 장점입니다.
가상 머신이 충돌하는 경우에도 모든 앱이나
프로그램에 접근하지 못하도록 차단합니다.
달빅 가상 머신을 RPA로 마이그레이션한 이유는 Arrow가
기존 자동화에 비해 몇 가지 이점을 제공하기 때문입니다.
따라서 Dalbec에서는 바이트코드를 Just-In-Time 컴파일러를 통해 머신 코드로 변환해야 합니다.
애플리케이션이 실행될 때마다 Dalvik은 기본적으로 저스트 인 타임 캠페인을 사용했습니다.
따라서 애플리케이션이 실행될 때마다 미션 코드의 코드를 변환해야 합니다.
이렇게 하면 애플리케이션이 시작될 때마다 먼저 머신 코드로 변환한
다음 앱을 실행해야 하므로 애플리케이션의 상승 효율이 느려집니다.
안드로이드 파일에 RTM을 도입하면
실제로 앱 실행 속도가 느려집니다.
모든 애플리케이션의 코드는 기기에 처음 설치
될 때 미리 컴파일된 정보 코드가 됩니다.
이렇게 하면 애플리케이션이 진정한 로컬 애플리케이션이 됩니다.
이러한 방식으로 R.T는 Dalvik에 비해 더 빠르게 앱을 보호할 수 있습니다.
이제 하드웨어 추상화 계층을 살펴보겠습니다. 하드웨어 추상화에
는 운영 체제 커널과 하드웨어 사이의 인터페이스가 있습니다.
그 목적은 하드웨어 제조업체의 지적 재산권을 보호하기 위해 하드웨어를 추출하는 것입니다.
하드웨어 인터페이스, 특정 플랫폼의 세부 정보를 숨기고 운영 체제에
가상 하드웨어 플랫폼을 제공하여 하드웨어 독립성을 갖도록 합니다.
소프트웨어 및 하드웨어 테스트의 관점에서 다양한 플랫폼에 이식할 수 있습니다.
하드웨어 추상화 계층을 기반으로 소프트웨어와 하드웨어 테스트를 모두 완료할
수 있으므로 소프트웨어와 하드웨어 테스트를 동시에 수행할 수 있습니다.
쉽게 말해서 하드웨어 추상화 계층의 위 퍼즐은 하드웨어를 제어하는 것입니다.
이제 Android의 가장 아래 계층인
Linux 커널 계층을 살펴 보겠습니다.
서비스는 Linux 커널에 따라 달라지며 오디오 디스플레이, 키패드, Bluetooth
USB 등과 같은 일부 Android 전용 드라이버가 이를 기반으로 추가되었습니다.
안드로이드 시스템 보안, 메모리 관리 프로세스 관리 네트워크 프로토콜 스택 및 드라이버
모델은 이 리눅스 커널에 의존하므로 안드로이드가 더욱 안전하고 안정적으로 작동합니다.
여기까지 안드로이드 아키텍처에 대해 알아봤는데, 이 이중 계층 안드로이드 아키텍처
를 이해하면 이후 튜토리얼에서 시스템 소스 코드를 분석할 때 도움이 될 것입니다.