Android Archi강의: 애플리케이션 레이어, 프레임워크, 컴포넌트

Android 운영 체제의 최초 출시는 2008년이었습니다. 처음부터 운영 체제 뒤의 팀은 이를 거인의 어깨 위에 구축했습니다. Android OS가 표면적으로 제공하는 사용자 인터페이스를 넘어 여러 레이어로 구성됩니다. 이러한 레이어에는 수십 년 동안 지속적으로 개발되어 온 맞춤형 코드와 오픈 소스 기술이 포함되어 있습니다.

Android는 많은 기업의 대규모 공동 노력과 투자를 통해 개발되었습니다. 안드로이드 개발의 주요 회사는 Google입니다. 다른 회사로는 Samsung, LG와 같은 장치 제조업체가 있습니다. Intel 및 ARM과 같은 프로세서 제조업체를 예로 들 수 있습니다.

When we talk about Android architecture, we mean how the Android system has been designed, segmented into layers, and built up to work as a system. Building such a complex system requires careful structuring to ensure all the components work together cohesively. Its architecture ensures that the many components function as a whole without crashing.

이 튜토리얼에서는 다음 내용을 학습합니다.

레이어

더 폴로wing are the layers that compose the Android architecture as labeled on the diagram:

  1. 어플리케이션
  2. 응용 프로그램 프레임 워크
  3. Android 런타임 및 핵심 라이브러리
  4. 리눅스 커널

Developing an operating system for mobile devices comes with a set of challenges. Using this layered architecture ensures that different problems are broken down and solved at different levels.

A layered architecture helps separate concerns and ensure android software developers don’t have to deal with low-level problems at every turn. They can instead focus on delivering business value concerned with the layer they’re working on.

개발자들은 앱이 애플리케이션 프레임워크 구현에 대해 걱정할 필요가 없도록 만들기 위해 노력하고 있습니다. 해당 작업은 애플리케이션 프레임워크에서 작업하는 시스템 개발자에게 맡겨져 있습니다.

The Application Framework developers work on developer experience and don’t have to worry about the low-level drivers. Low-level system engineers can focus completely on low-level components such as Bluetooth or Audio drivers and the like.

Android의 계층 구조를 사용하면 버그 수정이나 개선 사항이 포함된 업데이트를 각 계층 자체에 적용할 수 있습니다. 이렇게 하면 레이어 간의 변경 사항이 서로 간섭하지 않습니다. 이를 통해 서로 다른 수준의 OS에서 작업하는 사람들이 새로운 업데이트 및 릴리스가 완료될 때 서로를 방해하면서 작업할 수 있습니다.

안드로이드 응용 프로그램

안드로이드 응용 프로그램
안드로이드 응용 프로그램

이는 최종 사용자가 상호 작용하는 계층입니다. 애플리케이션 개발자가 실행할 애플리케이션을 게시하는 곳이 바로 이 계층입니다.

Android에는 기본적으로 Android 기기를 오프셋에서 사용할 수 있게 만드는 일련의 애플리케이션이 함께 제공됩니다.

  1. 홈 : Android의 홈페이지는 최종 사용자가 빠르게 액세스할 수 있는 일반적으로 사용되는 애플리케이션에 대한 실행기 아이콘으로 구성됩니다. 해당 앱의 실행 프로그램을 클릭하여 앱을 시작할 수 있습니다. 화면 맨 위에는 네트워크, 배터리 수준, 날짜 및 시간을 표시하는 위젯이 있습니다.
  2. 연락처 : Android는 기본적으로 연락처를 저장하고 검색하는 수단을 제공합니다. 기능 향상을 위해 연락처 정보는 다른 앱 간에 공유됩니다.
  3. 메시지 : Android는 SMS 메시지를 보내고 받는 기능을 제공합니다.
  4. 이메일 : Android는 e에 대한 기본 지원을 제공합니다.mail 서비스. Android 기기를 설정하려면 G가 필요합니다.mail 계정. G 설정mail 다른 전자를 활성화합니다mailAndroid 장치의 종속 구성 요소. 일부 전자mail 종속 기능에는 보안 및 복구 메커니즘이 포함됩니다. 또 다른 전자mail 종속 기능은 Android 애플리케이션용 마켓플레이스인 Play Store에 대한 액세스입니다.
  5. 브라우저 : Android에는 기본 브라우저가 함께 제공됩니다.
  6. 알림 서랍: 화면을 아래로 스와이프하면 알림 창이 나타납니다. 사용자가 알아야 할 애플리케이션 이벤트를 제공합니다. 알림 위에는 사용자가 전환할 수 있는 일반적으로 사용되는 장치 설정에 대한 바로가기 세트가 있습니다. 이러한 설정에는 Bluetooth 및 Wi-Fi와 같은 다양한 하드웨어 구성 요소에 대한 켜기 및 끄기 토글이 포함됩니다. 이러한 이벤트를 길게 누르면 해당 구성 페이지로 이동할 수 있습니다.

이 계층은 주로 애플리케이션 개발을 위해 조정되는 아래 계층과 달리 사용자 수준이라고도 합니다. 애플리케이션 개발자는 이 계층에서 자신의 앱에 대한 경험을 만들고 맞춤화합니다. 애플리케이션 계층 아래의 계층은 애플리케이션 개발자가 사용자 정의하지 않습니다. 이는 시스템 계층의 일부로 간주됩니다. 이러한 레이어는 제품이나 연구에 Android 소스 코드를 사용하려는 기기 제조업체, Google Android 팀 또는 제XNUMX자가 맞춤설정합니다.

응용 프로그램 프레임 워크

Android OS는 Java API를 사용하는 Android 기기의 기본 라이브러리와 기능을 노출합니다. 이것이 바로 Android 프레임워크입니다. 프레임워크는 Android 기기 리소스를 활용할 수 있는 안전하고 통일된 수단을 제공합니다.

응용 프로그램 프레임 워크
애플리케이션 프레임워크

1) 활동 관리자

애플리케이션은 앱에 대한 진입점을 제공하기 위해 Android 활동 구성요소를 사용합니다. Android 활동은 앱 사용자가 상호작용하는 사용자 인터페이스를 포함하는 구성요소입니다. 최종 사용자는 Android 기기와 상호작용하면서 여러 애플리케이션을 시작하고 중지하고 앞뒤로 이동합니다. 각 탐색 이벤트는 해당 애플리케이션에서 많은 활동의 활성화 및 비활성화를 트리거합니다.

Android ActivityManager는 애플리케이션 전환 중 예측 가능하고 일관된 동작을 담당합니다. ActivityManager는 Android OS가 전역 작업을 수행할 때 앱 제작자가 앱이 반응하도록 하는 슬롯을 제공합니다. 애플리케이션은 기기 회전, 메모리 부족으로 인한 앱 파괴, 앱의 초점이 맞지 않는 등의 이벤트를 수신할 수 있습니다.

애플리케이션이 이러한 전환에 반응할 수 있는 방식의 몇 가지 예로는 게임 활동 일시 중지, 전화 통화 중 음악 재생 중지 등이 있습니다.

2) 창 관리자

Android can determine screen information to determine the requirements needed to create windows 응용 프로그램을 위해. Windows are the slots where we can view our app user interface. Android uses the Window manager to provide this information to the apps and the system as they run so that they can adapt to the mode the device is running on.

창 관리자는 맞춤형 앱 경험을 제공하는 데 도움이 됩니다. 앱은 몰입형 경험을 위해 전체 화면을 채우거나 다른 앱과 화면을 공유할 수 있습니다. Android에서는 allo를 통해 이를 가능하게 합니다.wing 멀티windows 각 앱에 대해.

3) 위치관리자

대부분의 Android 기기에는 미터 단위의 정밀도까지 도달할 수 있는 위성 정보를 사용하여 사용자 위치를 얻을 수 있는 GPS 기기가 장착되어 있습니다. 프로그래머는 사용자에게 위치 권한을 요청하고 위치 및 인식 경험을 제공할 수 있습니다.

Android는 또한 무선 기술을 활용하여 위치 정보를 더욱 풍부하게 할 수 있습니다.tails 장치가 밀폐된 공간에 있을 때 적용 범위를 늘립니다. 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는 현재 ART(Android Runtime)를 사용하여 애플리케이션 코드를 실행합니다. ART 앞에는 개발자 코드를 Dalvik 실행 파일(Dex 파일)로 컴파일한 Dalvik Runtime이 있습니다. 이러한 실행 환경은 모바일 장치의 프로세서 및 메모리 제약을 고려하여 안드로이드 플랫폼에 최적화되어 있습니다.

런타임은 프로그래머가 작성한 코드를 계산을 수행하고 Android 프레임워크 구성요소를 활용하여 기능을 제공하는 기계어 코드로 변환합니다. Android는 각각 해당 프로세스에서 실행되는 여러 애플리케이션과 시스템 구성 요소를 호스팅합니다.

핵심 라이브러리

이 부분에서는 Android 운영 체제에 있는 핵심 라이브러리 중 일부에 대해 설명합니다.

2) 미디어 프레임워크

Android는 또한 기본적으로 널리 사용되는 미디어 코덱을 지원하므로 Android 플랫폼에서 생성된 앱이 멀티미디어 구성 요소를 쉽게 사용/재생할 수 있습니다. box.

3) SQL라이트

안드로이드에도 SQLite 데이터베이스 이를 통해 애플리케이션은 타사 라이브러리 없이도 매우 빠른 기본 데이터베이스 기능을 가질 수 있습니다.

4) 프리타입

Android에는 빠르고 유연한 글꼴 엔진이 사전 설치되어 있습니다. 이를 통해 애플리케이션 개발자는 애플리케이션 구성 요소의 스타일을 지정하고 개발자의 의도를 전달하는 풍부한 경험을 제공할 수 있습니다.

5) 오픈GL

Android에는 OpenGL 그래픽 시스템도 함께 제공됩니다. Android가 2D 및 3D 그래픽의 실시간 렌더링에서 하드웨어 구성 요소를 사용하도록 돕는 C 라이브러리입니다.

6) SSL

또한 Android에는 Android의 애플리케이션과 서버, 기타 모바일 기기, 라우터 등 기타 기기 간의 보안 통신을 가능하게 하는 보안 계층이 내장되어 있습니다.

7) SGL

Android에는 Android 플랫폼용 그래픽을 효율적으로 렌더링하는 하위 수준 코드로 구현된 그래픽 라이브러리가 함께 제공됩니다. 이는 Android 프레임워크 Android 그래픽 파이프라인의 상위 수준 구성요소와 함께 작동합니다.

8) libc

Android의 핵심에는 C 및 C++로 작성된 라이브러리가 포함되어 있습니다. 이는 성능 극대화에 도움이 되는 임베디드 사용을 위한 저수준 언어입니다. Libc는 스레드, 소켓, IO 등과 같은 하위 수준 시스템 기능을 이러한 라이브러리에 노출하는 수단을 제공합니다.

9) 웹킷

이는 브라우저 구축의 기반으로 사용되는 오픈 소스 브라우저 엔진입니다. 버전 4.4 KitKat 이전의 기본 Android 브라우저는 웹 페이지 렌더링에 이를 사용합니다. 이를 통해 애플리케이션 개발자는 WebView를 사용하여 뷰 시스템에서 웹 구성 요소를 렌더링할 수 있습니다. 이를 통해 앱은 웹 구성 요소를 해당 기능에 통합할 수 있습니다.

10) 표면 관리자

The surface manager is responsible for ensuring the smooth rendering of application screens. It does this by composing 2D and 3D graphics for rendering. It further enables this by doing off-screen bufferING.

리눅스 커널

Android 시스템의 루트 구성 요소는 Linux 커널입니다. 이는 Android의 모든 기능을 활성화하는 기본 요소입니다.

리눅스 커널

Linux 커널은 개발에 사용된 전투 테스트를 거친 소프트웨어입니다. 운영체제 슈퍼컴퓨터부터 소형 장치까지 광범위한 장치에 사용됩니다. 사물 인터넷(IoT)을 위한 소규모 네트워크 장치와 같이 처리 능력이 제한되어 있습니다.

제조업체가 사용자 경험에 맞는 다양한 기능을 갖춘 Android 장치를 만들 수 있도록 장치 사양에 맞게 Linux 커널을 조정할 수 있습니다.

Android와 관련하여 커널은 다음을 포함하되 이에 국한되지 않는 많은 기본 기능을 담당합니다.

  1. 장치 드라이버
  2. 메모리 관리
  3. 공정 관리

일부 기능을 확장해 보겠습니다.

장치 드라이버

Linux 커널에는 운영 체제가 다양한 하드웨어 구성 요소와 함께 작동할 수 있도록 하는 데 필요한 드라이버가 포함되어 있습니다. 이러한 드라이버는 다양한 제조업체의 하드웨어 구성 요소와 함께 작동할 수 있는 표준 인터페이스를 제공합니다.

이를 통해 장치 제조업체는 Bluetooth 구성 요소, Wi-Fi 구성 요소, 카메라 구성 요소와 같은 다양한 구성 요소를 소싱할 수 있습니다. 제조업체가 Android 표준 사양과 일치하는 한 통합은 원활하게 이루어집니다.

1) USB 드라이버

Linux는 또한 Android에 USB 장치와 인터페이스할 수 있는 수단을 제공합니다. 최신 장치에는 USB 2.0과 USB-C를 포함한 새로운 버전의 USB를 포함한 다양한 USB 포트가 함께 제공됩니다. 이러한 드라이버를 사용하면 USB 포트를 사용하여 충전하고, Android 장치의 로그와 같은 실시간 데이터를 전송하고, Android 장치와 상호 작용할 수 있습니다. 파일 시스템.

2) 블루투스 드라이버

Linux 커널은 Bluetooth 하드웨어 구성 요소와의 인터페이스를 지원합니다. 지원되는 Bluetooth 무선 주파수에서 수신된 데이터를 읽고 쓰는 방법을 제공합니다. 또한 Android에서 Bluetooth를 구성할 수 있는 일련의 기능을 제공합니다.

3) 와이파이 드라이버

Linux 커널은 WiFi 네트워킹 하드웨어 구성 요소를 통합하는 드라이버를 제공합니다. 모바일 장치에 내장된 WiFi 구성 요소를 사용하면 Android 장치를 WiFi 네트워크에 연결할 수 있습니다. 드라이버를 사용하면 Wi-Fi 구성 요소가 Wi-Fi 네트워크를 브로드캐스트하고 핫스팟을 생성할 수 있습니다.

4) 디스플레이 드라이버

Android에서는 디스플레이 구성요소와 인터페이스할 수 있습니다. 대부분의 장치에서 인터페이스 구성 요소는 LCD 터치스크린입니다. 구성 및 dra에 대한 지원을 허용합니다.wing 픽셀.

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 architecture is organized in layers.
  • 각 계층은 고유한 문제 집합을 해결합니다.
  • 최종 사용자는 애플리케이션 계층의 앱과 상호 작용합니다.
  • 애플리케이션 개발자는 애플리케이션 계층에서 사용할 앱을 개발합니다. 이는 Application Framework에서 제공하는 도구와 추상화를 사용하여 수행됩니다.
  • Android 프레임워크 계층은 기본 라이브러리를 통해 API를 생성하여 하위 수준 구성요소에 대한 액세스를 단순화합니다.
  • Android 런타임 및 핵심 라이브러리는 모바일 장치에 대한 최적화와 함께 하위 수준 언어를 사용합니다. 이를 통해 애플리케이션 개발자가 작성한 코드가 Android 기기의 제약에도 불구하고 원활하게 실행되도록 보장합니다.
  • Android 소프트웨어 스택의 맨 아래에는 Linux 커널이 있습니다. 이는 Android 장치에서 일반적인 하드웨어 구성 요소와 인터페이스합니다.