안드로이드 애플리케이션 개발 프레임워크는 애플리케이션 프레임워크입니다. 시스템 아키텍처는 Linux 커널, Android 런타임, 라이브러리, 애플리케이션 프레임워크 및 애플리케이션의 5개 부분으로 구성됩니다. 두 번째 부분에서는 이 5가지 부분을 자세히 소개합니다. 각 레이어를 아래에서 위로 분석해 보겠습니다. Android 아키텍처 1. Linux 커널Android는 Linux 2.6을 기반으로 보안, 메모리 관리, 프로세스 관리, 네트워크 스택 및 드라이버 모델과 같은 핵심 시스템 서비스를 제공합니다. Linux 커널은 하드웨어와 소프트웨어 간의 추상화 계층 역할도 하며 특정 하드웨어 세부 정보를 숨기고 상위 계층에 통합 서비스를 제공합니다. 컴퓨터 네트워크를 연구하고 OSI/RM을 알고 있다면 계층화의 장점은 하위 계층에서 제공하는 서비스를 사용하여 상위 계층에 통합 서비스를 제공하고 이 계층과 하위 계층 간의 차이점을 보호한다는 것임을 알 수 있습니다. 이 레이어와 하위 레이어가 변경되면 상위 레벨에는 영향을 미치지 않습니다. 즉, 각 계층은 각자의 임무를 수행하며, 각 계층은 고정된 SAP(Service Access Point)를 제공한다는 점은 높은 응집력과 낮은 결합도라고 할 수 있습니다. 단지 애플리케이션 개발만 하고 있다면 Linux 커널 계층을 깊이 이해할 필요는 없습니다. 2. Android 런타임 Android에는 Java 프로그래밍 언어의 핵심 클래스 라이브러리에서 사용할 수 있는 대부분의 기능을 제공하는 핵심 라이브러리 모음이 포함되어 있습니다. 각 Android 애플리케이션은 Dalvik 가상 머신의 인스턴스이며 자체 프로세스에서 실행됩니다. Dalvik 가상 머신은 단일 장치에서 여러 가상 머신을 효율적으로 실행하도록 설계되었습니다. Dalvik 가상 머신 실행 파일 형식은 .dex 형식입니다. dex 형식은 Dalvik용으로 특별히 설계된 압축 형식으로 메모리와 프로세서 속도가 제한된 시스템에 적합합니다. JVM을 포함한 대부분의 가상 머신은 스택 기반인 반면 Dalvik 가상 머신은 레지스터 기반입니다. 두 아키텍처 모두 장단점이 있습니다. 일반적으로 스택 기반 시스템에는 더 많은 명령어가 필요한 반면, 레지스터 기반 시스템에는 더 많은 명령어가 필요합니다. dx는 Java .class를 .dex 형식으로 변환할 수 있는 도구 세트입니다. dex 파일에는 일반적으로 여러 개의 .class가 있습니다. dex를 최적화해야 하는 경우가 있기 때문에 파일 크기가 1~4배 증가하여 ODEX로 끝납니다. Dalvik 가상 머신은 Linux 커널을 사용하여 스레드 및 저수준 메모리 관리와 같은 기본 기능을 제공합니다. 3. 라이브러리Android에는 Android 시스템의 다양한 구성 요소에서 사용할 수 있는 C/C 라이브러리 모음이 포함되어 있습니다. 이러한 기능은 Android 애플리케이션 프레임워크를 통해 개발자에게 공개됩니다. 핵심 라이브러리 중 일부는 다음과 같습니다. 시스템 C 라이브러리 - 임베디드 Linux 기반 장치에 맞게 조정된 표준 C 시스템 라이브러리(libc)의 BSD 파생물 미디어 라이브러리 - PacketVideo 기반 OpenCORE. 이러한 라이브러리는 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG를 포함한 스틸 이미지 파일뿐만 아니라 널리 사용되는 다양한 오디오 및 비디오 형식의 재생 및 녹음을 지원합니다. 인터페이스 관리 - 디스플레이 하위 시스템에 대한 액세스를 관리하고 여러 항목을 원활하게 결합합니다. 애플리케이션의 2D 및 3D 그래픽 레이어 LibWebCore - Android 브라우저 및 내장된 웹 보기를 구동하는 새로운 웹 브라우저 엔진 SGL - 기본 2D 그래픽 엔진 3D 라이브러리 - OpenGL ES 1.0 API 구현을 기반으로 합니다.
라이브러리는 하드웨어 3D 가속을 사용하거나 고도로 최적화된 3D 소프트웨어 래스터를 포함합니다. FreeType - 비트맵 및 벡터 글꼴 렌더링 SQLite - 모든 애플리케이션에서 사용할 수 있는 강력하고 가벼운 관계형 데이터베이스 엔진 4. 애플리케이션 프레임워크는 플랫폼별 개방형 개발을 제공하고, Android는 개발자가 다음을 수행할 수 있도록 합니다. 매우 풍부하고 새로운 응용 프로그램을 만듭니다. 개발자는 장치 하드웨어 활용, 위치 정보 액세스, 백그라운드 서비스 실행, 알람 설정, 상태 표시줄에 알림 추가 등을 자유롭게 수행할 수 있습니다. 개발자는 핵심 애플리케이션에서 사용되는 프레임워크 API에 대한 전체 액세스 권한을 갖습니다. 애플리케이션의 아키텍처는 구성 요소 재사용을 단순화하도록 설계되었습니다. 모든 애플리케이션은 해당 기능을 게시할 수 있으며 다른 애플리케이션은 해당 기능을 사용할 수 있습니다(프레임워크에서 적용하는 보안 제한 사항에 따라). 이 메커니즘을 통해 사용자는 구성 요소를 교체할 수 있습니다. 모든 애플리케이션은 실제로 다음을 포함하는 서비스 및 시스템 세트입니다. 보기 - 애플리케이션을 구축하는 데 사용할 수 있는 풍부하고 확장 가능한 보기 모음입니다. 목록, 그리드, 텍스트 상자, 버튼 및 내장된 웹 브라우저 콘텐츠 제공자(콘텐츠 제공자)를 포함하여 애플리케이션이 다른 애플리케이션(예: 주소록)의 데이터에 액세스할 수 있도록 허용하거나 * 자체 데이터 리소스 관리자(리소스 관리자)를 공유합니다. 지역화된 문자열, 그래픽 및 레이아웃 파일과 같은 비코드 리소스에 대한 액세스 알림 관리자(알림 관리자) - 모든 애플리케이션이 상태 표시줄에 사용자 정의 경고를 표시할 수 있도록 합니다. 활동 관리자(Activity Manager) - 애플리케이션 수명 주기를 관리하고 범용 탐색 대체 기능을 제공합니다. 기능 5. 애플리케이션Android는 이메일 클라이언트, SMS 프로그램, 캘린더, 지도, 브라우저, 연락처 및 기타 설정을 포함한 핵심 애플리케이션 컬렉션을 구성합니다. 모든 애플리케이션은 Java 프로그래밍 언어로 작성됩니다. 더욱 풍부한 애플리케이션이 우리의 개발을 기다리고 있습니다! 위에서 우리는 Android의 아키텍처가 계층화되어 있고 매우 명확하며 업무 분업이 명확하다는 것을 알고 있습니다. Android 자체는 소프트웨어 스택(Software Stack) 또는 "소프트웨어 스택 아키텍처"입니다. 스택은 주로 운영 체제, 미들웨어 및 애플리케이션의 세 가지 계층으로 나뉩니다. 위에서 우리는 또한 오픈 소스의 힘을 보았습니다. 친숙한 모든 오픈 소스 소프트웨어는 여기에 자신의 강점을 기여했습니다.