[Android] 안드로이드 앱의 기본 구조

2022. 1. 4. 22:53· Android

 

 

안드로이드

 

리눅스 커널을 기반으로 구글에서 제작한 모바일 운영체제

 

 

안드로이드의 특징

 

- 안드로이드는 공개 운영체제인 리눅스를 기본으로 한다

- 안드로이드 앱은 자바나 코틀린 언어를 이용해 개발한다

- 안드로이드 운영체제의 주요 부분과 라이브러리, 구글에서 만든 앱 등의 코드는 대부분 공개되어 있다

- 안드로이드 스마트폰은 구글뿐 아니라 여러 제조업체에서 만들 수 있다

- 안드로이드 앱은 구글의 플레이 스토어뿐만 아니라 다양한 방법으로 사용자에게 배포할 수 있다

- 안드로이드 플랫폼에서는 모든 응용 프로그램이 평등하다는 사상을 바탕으로, 모바일에 기본으로 탑재된 앱과

개발자가 만든 앱이 똑같은 환경에서 똑같은 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
'Android' 카테고리의 다른 글
  • [Android] 액티비티 컴포넌트 - 액티비티 ANR 문제와 코루틴
  • [Android] 액티비티 컴포넌트 - 액티비티 생명주기
  • [Android] 액티비티 컴포넌트 - 인텐트
  • [AndroidStudio] Android Studio 업데이트 오류 해결 (missing essential plugin org.jetbrains.android please reinstall android studio from scratch)
YOONJELLY
YOONJELLY
YOONJELLY
JELLYJELLY
YOONJELLY
전체
오늘
어제
  • 분류 전체보기 (153)
    • Springboot (2)
    • Android (15)
    • Algorithm (126)
      • 개념 (8)
      • BOJ (91)
      • Programmers (15)
      • SWEA (4)
    • 경험_기록 (1)
    • RIM_TIP (4)
    • Github (2)
    • CS (1)
      • 운영체제 (1)
      • 컴퓨터네트워크 (0)
      • 정보처리기사 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코틀린
  • softeer
  • 정렬
  • BOJ
  • Python
  • Android
  • 파이썬
  • 안드로이드
  • 프로그래머스
  • DFS
  • SWEA
  • 이것이코딩테스트다
  • 완전탐색
  • DP
  • 문자열
  • 백준
  • 알고리즘
  • programmers
  • 소프티어
  • 스택
  • kotlin
  • 이진탐색
  • 큐
  • 코딩테스트
  • 다이나믹프로그래밍
  • 액티비티컴포넌트
  • 딕셔너리
  • BFS
  • 자료구조
  • 그리디

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
YOONJELLY
[Android] 안드로이드 앱의 기본 구조
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.