Android Archi강의: 애플리케이션 레이어, 프레임워크, 컴포넌트
Android 운영 체제의 최초 출시는 2008년이었습니다. 시작부터 운영 체제를 담당한 팀은 거인의 어깨 위에 그것을 구축했습니다. 사용자 인터페이스를 넘어 Android OS는 표면 수준에서 제공되며 여러 레이어로 구성됩니다. 이러한 레이어에는 수십 년 동안 지속적으로 개발되어 온 맞춤형 코드와 오픈 소스 기술이 포함되어 있습니다.
Android 많은 회사의 대규모 협력 노력과 투자를 통해 개발되었습니다. 안드로이드 개발의 주요 회사는 Google입니다. 다른 회사로는 Samsung, LG와 같은 기기 제조업체, Intel 및 ARM과 같은 프로세서 제조업체가 있습니다.
우리가 이야기 할 때 Android 건축이란 우리가 어떻게 Android 시스템은 설계되고, 계층으로 세분화되고, 시스템으로 작동하도록 구축되었습니다. 이처럼 복잡한 시스템을 구축하려면 모든 구성 요소가 응집력 있게 함께 작동하도록 신중하게 구조화해야 합니다. 아키텍처는 많은 구성 요소가 충돌 없이 전체적으로 기능하도록 보장합니다.
레이어
다음은 이를 구성하는 계층입니다. Android 다이어그램에 표시된 대로의 아키텍처:
- 어플리케이션
- 응용 프로그램 프레임 워크
- Android 런타임 및 핵심 라이브러리
- 리눅스 커널
모바일 기기를 위한 운영 체제를 개발하는 데는 일련의 과제가 따릅니다. 이 계층적 아키텍처를 사용하면 다양한 문제가 분해되어 다양한 수준에서 해결됩니다.
계층적 아키텍처는 우려 사항을 분리하고 안드로이드 소프트웨어 개발자가 모든 단계에서 저수준 문제를 처리하지 않아도 되도록 돕습니다. 대신 작업 중인 계층과 관련된 비즈니스 가치를 제공하는 데 집중할 수 있습니다.
개발자들은 앱이 애플리케이션 프레임워크 구현에 대해 걱정할 필요가 없도록 만들기 위해 노력하고 있습니다. 해당 작업은 애플리케이션 프레임워크에서 작업하는 시스템 개발자에게 맡겨져 있습니다.
애플리케이션 프레임워크 개발자는 개발자 경험에 대해 작업하며 저수준 드라이버에 대해 걱정할 필요가 없습니다. 저수준 시스템 엔지니어는 Bluetooth나 오디오 드라이버 등과 같은 저수준 구성 요소에만 전적으로 집중할 수 있습니다.
Android의 계층 구조를 통해 버그 수정이나 개선 사항이 포함된 업데이트를 각 계층에 자체적으로 적용할 수 있습니다. 이렇게 하면 레이어 간의 변경 사항이 서로 간섭하지 않습니다. 이를 통해 서로 다른 수준의 OS에서 작업하는 사람들이 새로운 업데이트 및 릴리스가 완료될 때 서로를 방해하면서 작업할 수 있습니다.
Android 어플리케이션
이는 최종 사용자가 상호 작용하는 계층입니다. 애플리케이션 개발자가 실행할 애플리케이션을 게시하는 곳이 바로 이 계층입니다.
Android, 기본적으로 안드로이드 기기를 처음부터 사용할 수 있도록 하는 일련의 애플리케이션이 함께 제공됩니다.
- 홈 : 홈페이지 Android 최종 사용자가 빠르게 액세스하기를 원하는 일반적으로 사용되는 애플리케이션에 대한 실행 아이콘으로 구성됩니다. 해당 앱의 실행 프로그램을 클릭하여 앱을 시작할 수 있습니다. 화면 맨 위에는 네트워크, 배터리 수준, 날짜 및 시간을 표시하는 위젯이 있습니다.
- 연락처 : Android은 기본적으로 연락처를 저장하고 검색하는 수단을 제공합니다. 기능 향상을 위해 연락처 정보는 다른 앱 간에 공유됩니다.
- 메시지 : Android SMS 메시지를 보내고 받는 기능을 제공합니다.
- 이메일 : Android 이메일 서비스에 대한 기본 지원이 제공됩니다. Android 장치에는 Gmail 계정이 필요합니다. Gmail을 설정하면 다른 이메일 종속 구성 요소가 활성화됩니다. Android 장치. 일부 이메일 종속 기능에는 보안 및 복구 메커니즘이 포함됩니다. 또 다른 이메일 종속 기능은 Play Store에 대한 액세스입니다. Play Store는 Android 분야의 다양한 어플리케이션에서 사용됩니다.
- 브라우저 : Android 기본 브라우저가 함께 제공됩니다.
- 알림 서랍: 화면을 아래로 쓸어내리면 알림 서랍이 노출됩니다. 사용자가 알아야 할 애플리케이션 이벤트를 제공합니다. 알림 위에는 사용자가 토글할 수 있는 일반적으로 사용되는 일부 기기 설정에 대한 바로 가기 세트가 있습니다. 이러한 설정에는 Bluetooth 및 Wifi와 같은 다양한 하드웨어 구성 요소에 대한 켜기 및 끄기 토글이 포함됩니다. 이러한 이벤트를 길게 누르면 해당 구성 페이지로 이동할 수 있습니다.
이 계층은 대부분 애플리케이션 개발을 위해 조정된 아래 계층과 대조적으로 사용자 수준이라고도 합니다. 애플리케이션 개발자는 이 계층에서 앱에 대한 경험을 만들고 사용자 정의합니다. 애플리케이션 계층 아래의 계층은 애플리케이션 개발자가 사용자 정의하지 않습니다. 이들은 시스템 계층의 일부로 간주됩니다. 이러한 계층은 장치 제조업체, Google Android 팀 또는 다음을 사용하려는 타사가 사용자 정의합니다. Android 제품이나 연구의 소스 코드.
응용 프로그램 프레임 워크
이 어플리케이션에는 XNUMXµm 및 XNUMXµm 파장에서 최대 XNUMXW의 평균 출력을 제공하는 Android OS는 기본 라이브러리와 기능을 노출합니다. Android 사용하고 있는 장치 Java API. 이것이 바로 알려진 것입니다. Android 뼈대. 프레임워크는 안전하고 균일한 활용 수단을 제공합니다. Android 장치 자원.
1) 활동 관리자
응용 프로그램은 Android 앱에 대한 진입점을 제공하기 위한 활동 구성요소입니다. Android 활동은 앱 사용자가 상호작용하는 사용자 인터페이스를 포함하는 구성요소입니다. 최종 사용자가 Android 장치를 사용하면 여러 애플리케이션에서 시작하고 중지하고 앞뒤로 이동할 수 있습니다. 각 탐색 이벤트는 해당 애플리케이션에서 많은 활동의 활성화 및 비활성화를 트리거합니다.
이 어플리케이션에는 XNUMXµm 및 XNUMXµm 파장에서 최대 XNUMXW의 평균 출력을 제공하는 Android ActivityManager는 애플리케이션 전환 중 예측 가능하고 일관된 동작을 담당합니다. ActivityManager는 앱 제작자가 앱이 다음과 같은 경우 반응하도록 할 수 있는 슬롯을 제공합니다. Android OS는 글로벌 동작을 수행합니다. 애플리케이션은 장치 회전, 메모리 부족으로 인한 앱 파괴, 앱이 초점에서 벗어나는 등의 이벤트를 수신할 수 있습니다.
애플리케이션이 이러한 전환에 반응할 수 있는 방식의 몇 가지 예로는 게임 활동 일시 중지, 전화 통화 중 음악 재생 중지 등이 있습니다.
2) 창 관리자
Android 응용프로그램의 창을 만드는 데 필요한 요구 사항을 파악하기 위해 화면 정보를 확인할 수 있습니다. Windows 앱 사용자 인터페이스를 볼 수 있는 슬롯입니다. Android 창 관리자를 사용하여 앱과 시스템이 실행될 때 이 정보를 앱과 시스템에 제공하여 장치가 실행 중인 모드에 적응할 수 있도록 합니다.
창 관리자는 맞춤형 앱 경험을 제공하는 데 도움이 됩니다. 앱은 몰입형 경험을 위해 전체 화면을 채우거나 다른 앱과 화면을 공유할 수 있습니다. Android 각 앱에 대해 멀티 윈도우를 허용하여 이를 가능하게 합니다.
3) 위치관리자
다리 Android 장치에는 위성 정보를 사용하여 사용자 위치를 얻을 수 있는 GPS 장치가 장착되어 있으며, 이 장치는 미터 정밀도까지 도달할 수 있습니다. 프로그래머는 사용자에게 위치 권한을 요청하고 위치 및 인식 경험을 제공할 수 있습니다.
Android 또한 무선 기술을 활용하여 위치 세부 정보를 더욱 풍부하게 제공하고 장치가 밀폐된 공간에 있을 때 적용 범위를 늘릴 수도 있습니다. Android Location-Manager 아래 이러한 기능을 제공합니다.
4) 전화 관리자
다리 Android 장치는 전화 통신에서 주요 역할을 합니다. Android TelephoneManager를 사용하여 하드웨어와 소프트웨어 구성 요소를 결합하여 전화 통신 기능을 제공합니다. 하드웨어 구성 요소에는 SIM 카드와 같은 외부 부품과 마이크, 카메라, 스피커와 같은 장치 부품이 포함됩니다. 소프트웨어 구성 요소에는 다이얼 패드, 전화번호부, 벨소리 프로필과 같은 기본 구성 요소가 포함됩니다. 개발자는 TelephoneManager를 사용하여 기본 통화 기능을 확장하거나 미세 조정할 수 있습니다.
5) 자원관리자
Android 앱에는 일반적으로 코드 이상의 기능이 포함되어 있습니다. 또한 아이콘, 오디오 및 비디오 파일, 애니메이션, 텍스트 파일 등과 같은 다른 리소스도 있습니다. Android 이러한 리소스에 효율적이고 즉각적으로 액세스할 수 있도록 하는 데 도움이 됩니다. 또한 최종 사용자에게 올바른 리소스가 전달되도록 보장합니다. 예를 들어, 앱에서 필드를 채울 때 적절한 언어 텍스트 파일이 사용됩니다.
6) 뷰 시스템
Android 또한 앱 상호 작용에 필요한 공통 시각적 구성 요소를 쉽게 생성할 수 있는 수단을 제공합니다. 이러한 구성 요소에는 버튼과 같은 위젯, ImageView와 같은 이미지 홀더, ListView와 같은 항목 목록을 표시하는 구성 요소 등이 포함됩니다. 구성 요소는 사전 제작되어 있지만 앱 개발자의 요구 사항과 브랜딩에 맞게 맞춤 설정할 수도 있습니다.
7) 알림 관리자
알림 관리자는 알림을 담당합니다. Android 애플리케이션 이벤트 사용자. 이벤트가 발생할 때 사용자에게 시각적, 청각적, 진동 신호 또는 이들의 조합을 제공하여 이를 수행합니다. 이러한 이벤트에는 외부 및 내부 트리거가 있습니다. 내부 트리거의 몇 가지 예로는 배터리 부족을 표시하는 알림을 트리거하는 배터리 부족 상태 이벤트가 있습니다. 또 다른 예로는 알람과 같은 사용자 지정 이벤트가 있습니다. 외부 트리거의 몇 가지 예로는 새 메시지 또는 감지된 새 Wi-Fi 네트워크가 있습니다.
Android 프로그래머와 최종 사용자가 알림 시스템을 미세 조정할 수 있는 수단을 제공합니다. 이는 자신과 현재 환경에 가장 적합한 방식으로 알림 이벤트를 보내고 받을 수 있도록 보장하는 데 도움이 될 수 있습니다.
8) 패키지 관리자
Android 또한 설치된 애플리케이션에 대한 정보에 대한 액세스도 제공합니다. Android 설치 및 제거 이벤트와 같은 애플리케이션 정보, 앱이 요청하는 권한, 메모리 소비와 같은 리소스 활용도를 추적합니다.
이 정보를 통해 개발자는 컴패니언 앱에서 제공하는 새로운 기능에 따라 애플리케이션이 기능을 활성화하거나 비활성화하도록 만들 수 있습니다.
9) 콘텐츠 제공자
Android 에는 콘텐츠 제공자를 사용하여 장치의 애플리케이션 간에 데이터를 공유하는 표준화된 방법이 있습니다. 개발자는 콘텐츠 제공자를 사용하여 데이터를 다른 애플리케이션에 노출할 수 있습니다. 예를 들어 외부 검색 애플리케이션에서 앱 데이터를 검색 가능하게 만들 수 있습니다. Android 자체적으로 동일한 시스템을 사용하여 캘린더 데이터, 연락처 데이터 등의 데이터를 노출합니다.
Android 런타임 및 코어/네이티브 라이브러리
1) Android 런타임
Android 현재 사용 Android 애플리케이션 코드를 실행하기 위한 런타임(ART). ART는 개발자 코드를 Dalvik 실행 파일(Dex 파일)로 컴파일한 Dalvik 런타임에 선행합니다. 이러한 실행 환경은 모바일 기기의 프로세서 및 메모리 제약을 고려하여 안드로이드 플랫폼에 최적화되었습니다.
런타임은 프로그래머가 작성한 코드를 계산을 수행하는 기계 코드로 변환하고, 안드로이드 프레임워크 구성 요소를 활용하여 기능을 제공합니다. Android 각각 해당 프로세스에서 실행되는 여러 응용 프로그램 및 시스템 구성 요소를 호스팅합니다.
핵심 라이브러리
이 부분에서는 다음과 같은 핵심 라이브러리에 대해 설명합니다. Android 운영 체제.
2) 미디어 프레임워크
Android 또한 널리 사용되는 미디어 코덱을 기본적으로 지원하므로 Android 멀티미디어 구성요소를 바로 사용하고 재생할 수 있는 플랫폼입니다.
3) SQLite
Android 또한 SQLite 데이터베이스 이를 통해 애플리케이션은 타사 라이브러리 없이도 매우 빠른 기본 데이터베이스 기능을 가질 수 있습니다.
4) 프리타입
Android 빠르고 유연한 글꼴 엔진이 사전 설치되어 제공됩니다. 이를 통해 애플리케이션 개발자는 애플리케이션 구성 요소의 스타일을 지정하고 개발자의 의도를 전달하는 풍부한 경험을 제공할 수 있습니다.
5) 오픈GL
Android OpenGL 그래픽 시스템도 함께 제공됩니다. 도움이 되는 C 라이브러리입니다. Android 2D 및 3D 그래픽의 실시간 렌더링에 하드웨어 구성 요소를 사용합니다.
6) SSL
Android 또한 애플리케이션 간 보안 통신을 가능하게 하는 보안 계층이 내장되어 있습니다. Android 서버, 기타 모바일 장치, 라우터와 같은 기타 장치 6.
7) SGL
Android 안드로이드 플랫폼에 대한 그래픽을 효율적으로 렌더링하는 저수준 코드로 구현된 그래픽 라이브러리와 함께 제공됩니다. 상위 수준 구성 요소와 함께 작동합니다. Android 뼈대 Android 그래픽 파이프라인.
8) libc
핵심 Android C로 작성된 라이브러리가 포함되어 있으며 C++는 성능을 최대화하는 데 도움이 되는 임베디드 사용을 위한 저수준 언어입니다. Libc는 스레드, 소켓, IO 등과 같은 하위 수준 시스템 기능을 이러한 라이브러리에 노출하는 수단을 제공합니다.
9) 웹킷
이는 브라우저 구축의 기반으로 사용되는 오픈 소스 브라우저 엔진입니다. 기본값 Android 버전 4.4 이전의 브라우저 KitKat은 웹 페이지 렌더링에 이를 사용합니다. 이를 통해 애플리케이션 개발자는 WebView를 사용하여 뷰 시스템에서 웹 구성 요소를 렌더링할 수 있습니다. 이를 통해 앱은 웹 구성 요소를 해당 기능에 통합할 수 있습니다.
10) 표면 관리자
표면 관리자는 애플리케이션 화면의 매끄러운 렌더링을 보장하는 역할을 합니다. 렌더링을 위해 2D 및 3D 그래픽을 구성하여 이를 수행합니다. 또한 오프스크린 버퍼링을 수행하여 이를 가능하게 합니다.
리눅스 커널
의 루트 구성 요소 Android 시스템은 Linux 커널입니다. 이것은 모든 것을 가능하게 하는 기초적인 부분입니다. Android의 기능.
Linux 커널은 개발에 사용된 전투 테스트를 거친 소프트웨어입니다. 운영체제 슈퍼컴퓨터부터 소형 장치까지 광범위한 장치에 사용됩니다. 사물 인터넷(IoT)을 위한 소규모 네트워크 장치와 같이 처리 능력이 제한되어 있습니다.
Linux 커널은 제조업체가 다음을 만들 수 있도록 장치 사양을 충족하도록 조정할 수 있습니다. Android 사용자 경험에 맞춰 다양한 기능을 갖춘 장치.
에 관해서 Android커널은 다음을 포함하되 이에 국한되지 않는 많은 기본 기능을 담당합니다.
- 장치 드라이버
- 메모리 관리
- 공정 관리
일부 기능을 확장해 보겠습니다.
장치 드라이버
Linux 커널은 운영 체제가 다양한 하드웨어 구성 요소와 작동할 수 있도록 하는 데 필요한 드라이버를 수용합니다. 이러한 드라이버는 다양한 제조업체에서 공급한 하드웨어 구성 요소가 작동할 수 있는 표준 인터페이스를 제공합니다.
이를 통해 장치 제조업체는 Bluetooth 구성 요소, Wi-Fi 구성 요소, 카메라 구성 요소와 같은 다양한 구성 요소를 소싱할 수 있습니다. 제조사가 일치하는 한 Android 표준 사양, 통합이 원활합니다.
1) USB 드라이버
리눅스도 제공 Android USB 장치와 인터페이스하는 수단이 있습니다. 최신 장치에는 USB 2.0과 USB-C를 포함한 새로운 버전의 USB를 포함한 다양한 USB 포트가 함께 제공됩니다. 이러한 드라이버를 사용하면 USB 포트를 사용하여 충전하고 로그와 같은 실시간 데이터를 전송할 수 있습니다. Android 장치 및 안드로이드와 상호 작용 파일 시스템.
2) 블루투스 드라이버
Linux 커널은 Bluetooth 하드웨어 구성 요소와의 인터페이스를 지원합니다. 지원되는 Bluetooth 무선 주파수에서 수신된 데이터를 읽고 쓰는 방법을 제공합니다. 또한 이를 위한 일련의 시설을 제공합니다. Android 블루투스를 구성합니다.
3) 와이파이 드라이버
Linux 커널은 WiFi 네트워킹 하드웨어 구성 요소를 통합하는 드라이버를 제공합니다. 모바일 장치에 내장된 WiFi 구성 요소는 Android Wi-Fi 네트워크에 연결하는 장치. 드라이버를 사용하면 Wi-Fi 구성 요소가 Wi-Fi 네트워크를 브로드캐스트하고 핫스팟을 생성할 수 있습니다.
4) 디스플레이 드라이버
Android 디스플레이 구성 요소와 인터페이스할 수 있게 합니다. 대부분 기기의 경우 인터페이스 구성 요소는 LCD 터치스크린입니다. 픽셀 구성 및 그리기를 지원합니다.
5) 오디오 드라이버
Android 장치에는 일반적으로 오디오 입력 및 출력을 위한 하드웨어 구성 요소가 함께 제공됩니다. 커널의 오디오 드라이버는 Android 이러한 구성 요소에서 수신된 오디오를 사용하고 오디오 출력도 생성하는 시스템입니다.
6) 전원 관리자
다리 Android 전원 콘센트에서 분리된 상태에서 장치를 사용합니다. 따라서 그들은 많은 양의 사용량을 배터리에 의존하여 전원을 공급합니다. Linux 커널에는 이를 사용하는 장치의 요구 사항을 충족하도록 구성 가능한 전원 관리 시스템이 함께 제공됩니다.
Android OS는 전원 관리자를 사용하여 장치의 다른 구성 요소가 전원을 인식하도록 만듭니다. 다양한 전력 관련 상태를 방송함으로써 이를 수행합니다. 이러한 상태는 대기, 절전 및 배터리 부족입니다. ~에 Android, 최대 배터리 수명을 보장하기 위해 전원 관리자가 기본적으로 절전 모드로 조정되었습니다.
Power Manager는 애플리케이션이 다양한 전원 모드에 반응할 수 있는 수단을 제공합니다. 애플리케이션은 장치의 현재 전원 상태에 맞게 동작을 변경할 수도 있습니다.
응용 프로그램은 기본 전원 정책을 변경하도록 요청할 수도 있습니다. 애플리케이션은 하드웨어 구성 요소를 활성 상태로 유지하는 등 원하는 기능을 달성할 수 있습니다. 예를 들어 책을 읽을 때 사용자가 방해받지 않도록 화면을 활성 상태로 유지하는 것입니다. 또 다른 예는 백그라운드에서 음악을 들을 때 오디오 구성 요소를 켜진 상태로 유지하는 것입니다.
7) 플래시 메모리
다리 Android 장치는 플래시 메모리를 저장 수단으로 사용합니다. 플래시 메모리는 속도가 빠르고 공간을 적게 차지하므로 소형 장치에 적합합니다. Linux 커널은 다음을 위한 수단을 제공합니다. Android 플래시 메모리에 읽고 쓰는 장치. 이는 OS와 기타 응용 프로그램이 메모리 리소스를 쉽고 효율적으로 공유할 수 있는 방식으로 메모리를 분할하는 수단을 제공합니다.
8) 바인더
Android 각각 해당 프로세스에서 실행되는 많은 응용 프로그램과 시스템 구성 요소를 호스팅합니다. 대부분의 경우 이러한 프로세스는 간섭과 데이터 손상을 방지하기 위해 서로 격리되어야 합니다. 그러나 한 프로세스에서 다른 프로세스로 데이터를 전달하려는 경우가 있습니다.
Linux 커널은 바인더 드라이버를 제공하여 데이터 공유 기능을 활성화합니다. 바인더 드라이버는 프로세스 간 통신(IPC)을 가능하게 합니다. IPC 프로세스를 사용하면 다른 프로세스를 검색하고 정보를 공유할 수 있습니다.
메모리 관리
Linux 커널의 또 다른 책임은 메모리 관리입니다. 서로 다른 응용 프로그램이 실행될 때 커널은 사용하는 메모리 공간이 충돌하지 않고 서로 덮어쓰지 않도록 보장합니다.
또한 실행 중인 모든 앱이 작동하는 데 적절한 메모리를 확보하여 단일 앱이 너무 많은 공간을 차지하지 않도록 하는 데 도움이 됩니다.
공정 관리
모든 앱 Android 프로세스에서 실행됩니다. 커널은 프로세스 관리도 담당합니다. 이는 프로세스 생성, 일시 중지, 중지, 종료 또는 종료를 담당한다는 의미입니다.
커널은 동시에 여러 프로세스 실행, 프로세스 간 통신, 백그라운드에서 프로세스 실행 등 다양한 기능을 가능하게 합니다.
각 프로세스가 올바르게 작동하려면 자체 메모리 공간이 필요하므로 커널은 각 프로세스에 할당된 메모리 공간이 다른 프로세스로부터 보호되도록 보장합니다. 또한 다음과 같은 리소스가 보장됩니다. 램 프로세스에 할당된 리소스는 프로세스가 종료되면 해제됩니다.
Linux 커널은 장치에 있는 프로세서에 작업을 배포하는 역할도 담당합니다. 이를 통해 다양한 앱의 프로세스가 다른 코어에서 실행되므로 다중 코어가 있는 장치의 성능을 최대화할 수 있습니다.
Linux 커널은 보안 강화를 포함하여 내부적으로 더 많은 작업을 수행합니다.
요약
- Android 건축은 여러 층으로 구성됩니다.
- 각 계층은 고유한 문제 집합을 해결합니다.
- 최종 사용자는 애플리케이션 계층의 앱과 상호 작용합니다.
- 애플리케이션 개발자는 애플리케이션 계층에서 사용할 앱을 개발합니다. 이는 Application Framework에서 제공하는 도구와 추상화를 사용하여 수행됩니다.
- Android 프레임워크 계층은 기본 라이브러리를 통해 API를 생성하여 하위 수준 구성 요소에 대한 액세스를 단순화합니다.
- Android 런타임 및 코어 라이브러리는 모바일 장치에 대한 최적화와 함께 하위 수준 언어를 사용합니다. 이를 통해 응용 프로그램 개발자가 작성한 코드가 어떠한 상황에도 불구하고 원활하게 실행되도록 보장합니다. Android 장치 제약.
- 의 하단에있는 Android 소프트웨어 스택은 Linux 커널입니다. 이는 일반적인 하드웨어 구성 요소와 인터페이스합니다. Android 장치.