secure_world

안드로이드란? 본문

모바일/안드로이드

안드로이드란?

시월드 2022. 1. 2. 16:02

1. 안드로이드?

2. 안드로이드의 구조

3. 안드로이드의 구성 요소


1. 안드로이드?

[그림] 안드로이드 이미지 (출처 : 구글 이미지)

 - 안드로이드는 단순한 운영체제만을 뜻하는 것이 아닌, 리눅스 커널을 기반으로 제작된 운영체제와 미들웨어, 각 어플리케이션을 포함한 소프트웨어의 집합을 지칭하는 용어

 - Java, Kotlin으로 어플리케이션 등의 응용 프로그램 개발이 가능하며, 안드로이드는 오픈 소스를 지향하고 있기 때문에 기본적으로 많은 정보가 공개되어 있어 적용 및 이식성이 좋음

 


 

2. 안드로이드의 구조

 - 안드로이드의 구조는 오픈소스 소프트웨어 스택으로 이루어져 있음

 - '스택'이란 무엇인가 쌓여있는 구조라는 의미를 가지고 있고, 안드로이드는 소프트웨어를 쌓아 놓은 공개된 구조를 가지고 있음

[그림] 안드로이드의 3차원 구조 형태 (출처 : 구글 이미지)

 

[그림] 안드로이드의 2차원 구조 형태 (출처 : 구글 이미지)


2.1. Application Area

1. System App

  - 홈 화면, 주소록 등 기본적으로 제공되는 어플리케이션, 경우에 따라서는 눈에 보이지 않는 형태로 존재하기도 하며 스마트폰의 핵심 기능들을 User App에 제공하는 역할

2. User App

  - 사용자용 어플리케이션으로 개발자들이 Java, Kotlin으로 어플리케이션을 만들고 플레이 스토어등을 통해서 설치할 수 있는 응용 프로그램을 말함


2.2. Java API Framework

  - Android Framework라고도 불리며 모든 안드로이드 어플리케이션들이 사용하는 Toolkit을 말함

  - User App개발에 사용할 수 있는 Java API, 안드로이드 버전에 따라서 지원되는 API가 다르기 때문에 호환성 제공에 신경을 써야함

  - API란 Application Programming Interface를 말하며 컴퓨터나 컴퓨터 프로그램 사이의 연결을 말함


2.3. Native Library, Android Runtime

1. Android Runtime  

  - 안드로이드는 가상머신을 사용하는 Java언어로 응용프로그램을 개발하도록 설계되어있음

  - 서로 다른 하드웨어에서 동일 프로그램이 실행될 수 있도록 보장하지만 JVM(Java Virtual Machine)을 사용하면 문제가 발생할 수 있기 때문에 ART(Android Runtime)을 사용하게 됨 

2. Native Library

  - Android Runtime을 통해 실행되는 프로그램들이 안드로이드 하드웨어 장치들을 사용할 수 있도록 해주는 C/C++ 라이브러리

  - NDK(Native Development Kit)을 통해 구현


2.4. HAL(Hardware Abstraction Layer)

  - 하드웨어 추상화 영역

  - 서로 다른 안드로이드 스마트폰 제조사들의 하드웨어를 동일 방식으로 접근할 수 있도록 제공하는 호환 인터페이스 레이어를 말함


2.5. Linux Kernel

  - 운영체제의 핵심 영역(=커널)

  - 스레드, 전원 관리, 보안 등의 스마트폰을 기본적으로 구동하고 사용할 수 있도록 만들어주는 영역

 


 

3. 안드로이드 구성 요소

[그림] 안드로이드의 구성 요소

  - 안드로이드의 구성 요소는 액티비티, 프레그먼트, 브로드캐스트 리시버, 서비스, 콘텐츠 프로바이더, 노티피케이션, 인텐트, 인텐트 필터 등으로 구성되어 있음

  - 4대 구성요로소 불리는 액티비티, 서비스, 콘텐츠 프로바이더, 브로드캐스트 리시버가 있으며, 인텐트를 거쳐 다른 구성요소를 호출할 수 있음


3.1. 안드로이드의 4대 구성요소

[그림] 안드로이드의 4대 구성요소 (출처 : 구글 이미지)

1. Activity

  - 사용자와 앱이 상호작용하기 위한 진입점으로 생각하면 됨

  - UI화면을 담당하는 요소로 자바소스에서 Activity클래스를 상속해야하며, Activity를 기본적으로 가지고 생명주기 메소드를 재정의하여 원하는 기능을 구현하는 방식으로 되어있음

  - 각각의 Activity는 독립되어 있음

  - 특징

    1. 안드로이드 어플리케이션은 반드시 하나 이상의 액티비티를 가지고 있어야함

    2. 두 개의 액티비티를 동시에 Display할 수 없음

    3. 다른 어플리케이션의 액티비티도 불러낼 수 있음

    4. 액티비티 내 프레그먼트를 추가하여 화면을 분할할 수 있음


2. Service

  - 여러가지 이유로 어플리케이션을 백그라운드 상태에서 계속 실행시키기 위한 다목적 진입점으로 생각

  - 서비스는 백그라운드에서 실행되는 프로세스를 의미하며, 어플리케이션의 구성 요소이므로 새로 만든 후에는 항상 Manifest에 등록해주어야하고, 제공되는 화면은 따로 존재하지 않음

  - 특징

    1. 화면이 없고 백그라운드 구성 요소

    2. 시작된 서비스는 어플리케이션이 종료되어도 백그라운드에서 실행되고 있음

    3. 모든 서비스는 서비스 클래스를 상속받아 사용

    4. 네트워크를 통해 데이터를 가져올 수 있음


3. Content Provider

  - 콘텐츠 프로바이더는 데이터를 관리하고 다른 어플리케이션 데이터를 제공해주는 역할을 하며, 데이터 베이스의 데이터를 전달할 때 많이 사용

  - 특징

    1. 파일 입출력, SQLite DB 등을 통해 데이터를 관리

    2. 콘텐츠 프로바이더를 통해 다른 어플리케이션의 데이터도 변경이 가능함


4. Broadcast Receiver

  - 사용자가 만드는 플로우 밖에서 Android 시스템이 어플리케이션에 알려야하는 사건이 생길 때, 이벤트를 통해 어플리케이션에 전달함으로써 어플리케이션에 진입할 수 있는 진입점

  - 브로드캐스트 리시버란 안드로이드에서 다양한 이벤트와 정보를 받아 반응하는 구성 요소, 메세지를 여러 객체에 전달하는 방법을 의미

  - 특징

    1. 디바이스에서 발생되는 일 중, 어플리케이션이 알아야하는 상황이 발생하면 메세지를 전송

    2. 수신기를 통해 디바이스의 상황을 감지하고 적절한 작업을 수행

    3. 대부분 UI가 존재하지 않음

 

'모바일 > 안드로이드' 카테고리의 다른 글

안드로이드 - JVM&DVM / APK파일의 구조  (0) 2022.01.03
Comments