안드로이드 개요
스마트 기기가 없는 생활을 상상하기 어려울 정도로, 우리의 일상은 이러한 기술과 밀접하게 연결되어 있음
통신에서부터 엔터테인먼트, 개인의 건강 관리에 이르기까지 모든 것이 스마트 기기와 연동되어 있음
이 모든 기기의 핵심에는 다양한 운영 체제(OS)가 있으며, 그 중 안드로이드는 가장 널리 사용되는 운영 체제 중 하나임
안드로이드 정의
휴대 전화를 비롯한 휴대용 장치를 위한 운영 체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램을 포함하고 있는 모바일 운영 체제이자 모바일 플랫폼임
모바일 운영체제
- 애플리케이션 실행, 통신, 데이터 관리 등의 기능을 총괄
- 운영체제 (Operating System)은 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어임
- 모바일 기기의 기본적인 기능과 사용자 인터페이스를 관리함

안드로이드 OS의 주요 특징
- 오픈 소스: 안드로이드는 오픈 소스 소프트웨어로서, 개발자들이 소스 코드에 접근하여 이를 수정하고 배포할 수 있게 함 이는 다양한 제조사가 자신들의 기기에 맞춤형 안드로이드 버전을 개발할 수 있게 해줌
- 다양한 하드웨어 지원: 안드로이드는 다양한 하드웨어 플랫폼을 지원함 이는 제조업체가 다양한 종류의 기기를 출시할 수 있게 하며, 소비자에게는 더 많은 선택권을 제공함
- 구글 서비스와의 통합: 안드로이드는 구글 플레이 스토어를 포함한 구글의 다양한 서비스와 밀접하게 통합되어 있음 이를 통해 사용자는 앱, 게임, 책, 영화 등 다양한 콘텐츠에 쉽게 접근할 수 있음
- 커스터마이징 가능: 안드로이드는 홈 스크린 위젯, 라이브 배경화면, 다양한 런처 앱 등을 통해 사용자 맞춤화가 가능함 사용자는 자신의 기기를 개인의 취향에 맞게 조정할 수 있음
- 멀티태스킹: 안드로이드는 강력한 멀티태스킹 기능을 지원하여 사용자가 여러 애플리케이션을 동시에 실행하고 쉽게 전환할 수 있게 함
- 알림 시스템: 안드로이드는 사용자에게 애플리케이션 알림을 효과적으로 제공하는 직관적인 알림 시스템을 갖추고 있음 이를 통해 사용자는 중요한 정보를 빠르게 확인할 수 있음
- 보안: 안드로이드는 앱 권한 관리, Google Play Protect, 월간 보안 업데이트 등을 통해 기기의 보안을 강화함
- 업데이트와 지원: 안드로이드는 정기적인 업데이트를 통해 새로운 기능을 추가하고 보안을 강화함 하지만 업데이트의 적용은 기기 제조사와 모델에 따라 다를 수 있음
- 개발자 지원: 안드로이드는 개발자가 앱을 쉽게 개발하고 배포할 수 있도록 다양한 도구와 API를 제공함
- 대규모 사용자 기반: 안드로이드는 전 세계에서 가장 널리 사용되는 모바일 OS 중 하나로, 대규모의 사용자 기반을 갖추고 있어 앱 개발자들에게 매력적인 플랫폼임
플랫폼
모바일 플랫폼
- 모바일 앱 실행을 쉽게 해주는 모바일 운영체제
- 모바일 앱 개발을 쉽게 해주는 애플리케이션 프레임워크


안드로이드 플랫폼


Linux커널
- ART(Android런타임)는 스레딩 및 하위 수준의 메모리 관리와 같은 기본 기능에 Linux커널을 사용
- Android가 Linux커널의 주요보안 기능을 활용
- 다양한하드웨어디바이스드라이버 제공
HAL(하드웨어 추상화 계층)
- HAL(하드웨어 추상화 계층)은 상위 수준의JavaAPI프레임워크에 기기 하드웨어기능을 노출하는표준인터페이스를 제공
- 프레임워크 API기기가 하드웨어에 액세스하기 위해 호출을 수행하면 Android시스템이해당 하드웨어 구성 요소에 대한 라이브러리 모듈을 로드
Android런타임
- Android 버전5.0 (API레벨21)이상을 실행하는 기기의 경우,각 앱이 자체 프로세스 내에서자체 ART(Android런타임)인스턴스로 실행
- ART는 DEX파일을 실행하여 저 용량 메모리 기기에서 여러 가상 머신을 실행하도록 작성되었음 DEX파일은Android용으로 특별히 설계된 바이트 코드 형식으로, 최소 메모리 공간에 맞게 최적화되어 있음
- Android버전 5.0 (API 레벨21)이전 버전에서는 Dalvik이 Android런타임이었음 앱이 ART에서 제대로 실행되면 Dalvik에서도 제대로 실행되지만,그 반대의 경우 제대로 실행 된다는 보장은 없음
- Android에는 JavaAPI프레임워크가 사용하는 몇 가지 Java 8언어 기능을 포함하여 대부분의 Java프로그래밍 언어 기능을 제공하는 일련의 핵심 런타임 라이브러리도 포함되어 있음
네이티브C/C++라이브러리
- ART 및 HAL등의 많은 핵심 Android시스템 구성 요소와 서비스가 C및C++로 작성된 네이티브 라이브러리를 필요로 하는 네이티브코드를 기반으로 빌드 되었음
- Android플랫폼은 Java프레임워크 API를 제공하여 이러한 일부 네이티브라이브러리의기능을 앱에 노출함
- 예를 들어, Android프레임워크의 JavaOpenGLAPI를 통해 OpenGLES에 액세스하여 앱에서 2D 및 3D 그래픽을 그리고 조작할 수 있는 지원 기능을 추가 할 수 있음
JavaAPI프레임워크
- AndroidOS의 전체 기능 세트는 Java언어로 작성 된 API를 통해 액세스 할 수 있습니다. 이러한API는 핵심 모듈식 시스템 구성 요소 및 서비스 재활용을 단순화하여 Android 앱을 제작하는 데 필요한 빌딩 블록을 구성하며,이런 빌딩 블록에는 다음이 포함됨
- 기능이 풍부하며 확장 가능 한 뷰 시스템-목록, 그리드 , 텍스트상자 , 버튼 및 삽입 가능한 웹 브라우저를 포함하여 앱의 UI를 빌드하는 데 사용 가능
- ResourceManager-현지화 된 문자열,그래픽및레이아웃파일과같은코드가 아닌 리소스에 대한 액세스 제공
- NotificationManager-모든 앱이 상태 표시 줄에 사용자 지정 알림을 표시 할 수 있도록 지원
- Activity Manager-앱의 수명 주기를 관리하고 공통 탐색 백스택 제공
- 콘텐츠 제공자-앱이 주소록 앱과 같은 다른앱의 데이터에 액세스하거나 자신의 데이터를 공유 할 수 있도록 지원
시스템앱
- Android는 이메일, SMS메시징, 캘린더, 인터넷 검색, 주소록 등의 주요 앱 세트와 함께 제공됨 플랫폼에 기본적으로 포함 된 앱에는 사용자가 설치하도록 선택하는 앱과 구별되는 특별한 상태가 없음 따라서 타사 앱이 사용자의 기본 웹 브라우저, SMS 메시징 또는 기본 키보드가 될 수 있음 (단,시스템의 설정 앱 등 가지 예외가적용될수있음)
- 시스템 앱은 사용자를 위한 앱으로도 작동하고 개발자가 자신의 앱에서 액세스 할 수 있는 주요 기능을 제공하기 위한 용도로도 작동함
- 예를 들어, 앱이 SMS 메시지를 제공하고자 할 경우 해당 기능을 직접빌드할 필요가 없음 그대신, 이미 설치 된 SMS앱을 호출하여 지정한 받는 사람에게 메시지를 제공 할 수 있음
안드로이드 탄생

안드로이드 버전






앱 마켓


안드로이드 스튜디오
강점
- 유연한 Gradle 기반 빌드 시스템
- 빠르고 기능이 풍부한 에뮬레이터
- 모든 Android 기기를 개발할 수 있는 통합 환경
- 변경사항을 적용하여 앱을 다시 시작하지 않고 실행 중인 앱에 코드 및 리소스 변경사항을 푸시할 수 있음
- 일반적인 앱 기능을 빌드하고 샘플 코드를 가져오는 데 도움이 되는 코드 템플릿과 GitHub 통합
- 광범위한 테스트 도구 및 프레임워크
- 성능, 유용성, 버전 호환성 및 기타 문제를 파악하는 Lint 도구
- C++ 및 NDK 지원
- Google 클라우드 메시징과 App Engine의 통합을 도와주는 Google Cloud Platform을
기본적으로 지원하는 기능