안드로이드
리눅스 커널을 기반으로 구글에서 제작한 모바일 운영체제
안드로이드의 특징
- 안드로이드는 공개 운영체제인 리눅스를 기본으로 한다
- 안드로이드 앱은 자바나 코틀린 언어를 이용해 개발한다
- 안드로이드 운영체제의 주요 부분과 라이브러리, 구글에서 만든 앱 등의 코드는 대부분 공개되어 있다
- 안드로이드 스마트폰은 구글뿐 아니라 여러 제조업체에서 만들 수 있다
- 안드로이드 앱은 구글의 플레이 스토어뿐만 아니라 다양한 방법으로 사용자에게 배포할 수 있다
- 안드로이드 플랫폼에서는 모든 응용 프로그램이 평등하다는 사상을 바탕으로, 모바일에 기본으로 탑재된 앱과
개발자가 만든 앱이 똑같은 환경에서 똑같은 API를 이용한다
안드로이드 운영체제의 구조
리눅스 커널(Linux Kernel)
안드로이드는 리눅스에 기반을 둔 오픈소스 소프트웨어 스택
하드웨어 추상화 레이어(hardware abstraction layer, HAL)
하드웨어의 추상화 계층으로,
상위의 자바 API 프레임워크에서 하드웨어 기능을 이용할 수 있게 표준 인터페이스를 제공한다
안드로이드 런타임(Android runtime)
흔히 ART라고 하며 앱을 실행하는 역할을 한다
안드로이드 앱은 DEX 파일로 빌드되는데 이 DEX 파일을 해석해서 실행하는 주체이다
네이티브 C/C++ 라이브러리
안드로이드 앱은 대부분 자바 프레임워크로 개발하지만
네이티브 C/C++ 라이브러리를 이용할 수도 있는데 이를 안드로이드 NDK라고 한다
자바 API 프레임워크
앱을 개발할 때 사용하는 자바 API
< 컴포넌트를 기반으로 한 개발 >
컴포넌트 : 애플리케이션의 구성 요소
안드로이드에서는 클래스로 컴포넌트를 개발한다.
모든 클래스가 컴포넌트라는 이야기는 아니다.
앱은 여러 클래스로 구성되는데 크게 컴포넌트 클래스와 일반 클래스로 구분한다.
컴포넌트 클래스 : 개발자가 만들기는 했지만 생명주기를 안드로이드 시스템에서 관리
일반 클래스 : 클래스의 객체 생성부터 소멸까지 생명주기를 개발자 코드에서 관리
안드로이드 컴포넌트 종류 (4가지)
1) 액티비티 : 화면을 구성하는 컴포넌트. 앱의 화면을 안드로이드 폰에 출력하려면 액티비티를 만들어야 하며,
앱이 실행되면 액티비티에서 출력한 내용이 안드로이드 폰에 나온다.
2) 서비스 : 백그라운드 작업을 하는 컴포넌트. 화면과 상관없이 백그라운드에서 장시간 실행해야 할 업무를 담당한다.
3) 콘텐츠 프로바이더 : 앱의 데이터를 공유하는 컴포넌트. 하나의 앱이 자신의 데이터를 다른 앱에 공유하려면
콘텐츠 프로바이더를 만들어야 하며, 다른 앱에서는 그 콘텐츠 프로바이더를 이용해 데이터에 접근한다.
4) 브로드캐스트 리시버 : 시스템 이벤트가 발생할 때 실행되게 하는 컴포넌트.
(이 이벤트는 사용자 이벤트가 아니라 시스템에서 발생하는 특정 상황 의미. ex: 부팅 완료, 배터리 방전)
'Android' 카테고리의 다른 글
[Android] 코루틴 Coroutine (0) | 2022.04.01 |
---|---|
[Android] 액티비티 컴포넌트 - 액티비티 ANR 문제와 코루틴 (0) | 2022.01.05 |
[Android] 액티비티 컴포넌트 - 액티비티 생명주기 (0) | 2022.01.05 |
[Android] 액티비티 컴포넌트 - 인텐트 (0) | 2022.01.05 |
[AndroidStudio] Android Studio 업데이트 오류 해결 (missing essential plugin org.jetbrains.android please reinstall android studio from scratch) (0) | 2021.08.01 |