1. 안드로이드란?

안드로이드는 리눅스 커널과 다른 오픈 소스 소프트웨어 기반으로 된 운영체제(Operating System)이다. 안드로이드에 대해 알기 위해서는 운영체제(OS)에 대해 간략히 알 필요가 있다.

 

1-1.      운영체제(Operating System)

 운영체제(Operating System 이하 OS)은 컴퓨터 하드웨어와 컴퓨터 사용자 사이에 소통을 돕는 인터페이스이다. 뿐만 아니라 사용자가 일일이 작업할 필요없이 파일 관리, 메모리 관리, 프로세스 관리, 입출력, 컴퓨터 주변 장치를 관리해주어 사용자가 하드웨어에 더 효율적으로 접근하고 편리하게 사용하는데 도움을 주는 소프트웨어이다.
사용자가 하드웨어에 접근하는 방식은 다음 이미지와 같다.

사용자가 작동하기를 원하는 프로그램을 동작명령을 내리고, OS는 그것을 받아 하드웨어에 지시한다. 사용자가 일일이 저장소에서 CPU로 데이터를 불러와 처리하는 일 없이 OS가 알아서 처리를 해주는 편리한 시스템이다.

이러한 OS는 임베디드, 서버, 모바일, 데스크탑으로 나뉘어서 볼 수 있다.
주변에서 쉽게 볼 수 있는 데스크탑 운영체제에는 Windows, macOS, Linux 등이 있고, 모바일 운영체제에는 IOS와 안드로이드가 있다. 우리는 이 중 안드로이드에 대해 알아볼 것이다.

 

 

1-2. Android

 안드로이드는 휴대기기용 오픈소스 운영체제이며 Google이 주도하는 관련 오픈소스 프로젝트입니다.” Android 오픈소스 프로젝트 사이트에서 인용한 안드로이드의 개념이다.
조금 더 상세하게 정리하자면, 리눅스 커널을 기반으로 스마트폰 태플릿 등과 같은 휴대기기용 운영체제와 중요 어플리케이션이 포함된 Software집합체이다.
, 운영체제로의 역할과 사용자와 더 많은 interface를 제공하는 소프트웨어의 집합이다.

안드로이드 구조는 총 5계층으로 이루어져 있다.

   - 어플리케이션 계층

   - 어플리케이션 프레임워크 계층

   - 안드로이드 런타임 계층

   - 네이티브 라이브러리 계층

- 리눅스 커널 계층

어플리케이션 계층은 android 구조 스택의 최상위 계층이며, 사용자가 실제로 마주하는 계층이다.
어플리케이션 프레임워크 계층은 자바로 작성되어 네이티브 라이브러리와 안드로이드 런타임 계층을 추상화한 계층이다. 어플리케이션 4대 컴포넌트를 통해 다른 어플리케이션과 상호작용할 수 있는데, 4가지는 Activity, Service, Broadcast Receiver, Content Provider로 구성된다.

 

안드로이드 런타임 계층은 자바 JVM이 있듯, 안드로이드에서 컴파일하고 실행하기 위한 계층이다.

 

네이티브 라이브러리 계층은 일반 데스크탑과 같은 것보다 더 적은 용량의 주기억장치에서 동작을 하므로 이런 휴대기기에 최적화된 라이브러리 집합이다.

 

마지막으로 커널 계층은 시스템 전체의 중심역할을 한다.
안드로이드는 리눅스 커널을 기반으로 하여 core system service를 제공한다(보안, 메모리관리, 프로세스 관리, 네트워크 스택과 드라이버 모델과 같은 서비스를 제공한다.). 안드로이드가 리눅스 기반이다 보니 어플리케이션은 Linux 운영 체제에서도 구동이 가능할거라 생각이 들 수 있다. 하지만 C로 구현된 라이브러리가 Linux환경에서 사용하는 것과는 독자적인 라이브러리를 사용하므로 구동이 잘 되지 않는다.

 

기존에는 eclipse ide(통합개발환경)를 통해 안드로이드를 제작하였지만 현재는 지원을 안하고, 안드로이드에서 Android Studio라는 통합개발환경을 제공해주어 더 편한 어플리케이션 제작이 가능하게 되었다.

 

이 개발환경이 지원하는 언어는 java와 코틀린인데, 코틀린이라는 언어가 새로 나왔다.
코틀린은 만들어진지 약 10년정도가 되는 역사가 있는 언어지만 2017년 구글이 안드로이드의 공식언어로 채택하면서 빛을 발하기 시작했다. Java와 비교해서 간결한 문법이 크나큰 특징이라 안드로이드 개발 시장에서 점점 많은 비율을 차지해 나가고 있으며, 20191월부터 안드로이드 프로젝트에서도 코틀린을 사용할 정도로 비약적인 성장을 이루었다.

 

필자는 아직 코틀린을 잘 사용할줄 모르므로, 여기서는 안드로이드 개발 환경에 대해 설명을 위해 java를 사용할 것이다.

 

또한 안드로이드는 소프트웨어 개발 키트(Software Development Kit, SDK)를 제공한다. 안드로이드 API, 안드로이드 응용 프로그램 개발에 필요한 도구, 샘플 코드, 관련 문서가 포함되어 개발자에게 제공하는데, 특히 에뮬리이터를 제공함으로써 더 효율적인 개발이 가능하게 한다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기