본문 바로가기
Android

[Doit 깡샘의 안드로이드 앱 프로그래밍 with 코틀린] 정리 2 - 안드로이드 소개

by 들풀민들레 2022. 2. 28.
본 글은 [Doit 깡샘의 안드로이드 앱 프로그래밍 with 코틀린 - 이지스퍼블리싱 (2022)] 의 내용을 발췌한 것입니다.
좀더 자세한 내용은 책 혹은 인강을 통해 확인해 주세요.

 

 

 

 

안드로이드는 리눅스 커널을 기반으로 구글에서 제작한 모바일 운영체제입니다. 구글은 2008년 안드로이드 1.0 버전을 출시한 이후 새 버전을 계속 내놓아 전 세계 모바일 플랫폼 시장의 70~80%를 차지하고 있습니다.

 

안드로이드는 어떤 특징이 있을까?


먼저 안드로이드의 특징을 요약해 보고 이어서 각 특징을 자세하게 살펴보겠습니다.
• 안드로이드는 공개 운영체제인 리눅스를 기반으로 합니다.
• 안드로이드 앱은 자바나 코틀린 언어를 이용해 개발합니다.
• 안드로이드 운영체제의 주요 부분과 라이브러리, 구글에서 만든 앱 등의 코드는 대부분 공개되어 있습니다.
• 안드로이드 스마트폰은 구글뿐 아니라 여러 제조업체에서 만들 수 있습니다.
• 안드로이드 앱은 구글의 플레이 스토어뿐만 아니라 다양한 방법으로 사용자에게 배포할 수 있습니다.
• 안드로이드 플랫폼에서는 모든 응용 프로그램이 평등하다는 사상을 바탕으로, 모바일에 기본으로 탑재된 앱과 개발자가 만든 앱이 똑같은 환경에서 똑같은 API를 이용합니다.

 

 

안드로이드 운영체제의 구조


앱 개발자가 운영체제의 구조까지 자세히 알 필요는 없지만 상식 수준에서 알아 두면 좋습니다. 여기에서는 안드로이드 운영체제의 구조 중에서 꼭 필요한 내용만 간략하게 살펴보겠습니다.
리눅스 커널(Linux kernel) 안드로이드는 리눅스에 기반을 둔 오픈소스 소프트웨어 스택입니다.
하드웨어 추상화 레이어(hardware abstraction layer, HAL) 하드웨어의 추상화 계층으로, 상위의 자바 API 프레임워크에서 하드웨어 기능을 이용할 수 있게 표준 인터페이스를 제공합니다.
안드로이드 런타임(Android runtime) 흔히 ART라고 하며 앱을 실행하는 역할을 합니다. 안드로이드 5.0 버전 이전에는 Dalvik이 안드로이드 앱을 실행했지만 5.0 버전부터는 ART로 바뀌었습니다. 안드로이드 앱은 DEX 파일로 빌드되는데 이 DEX 파일을 해석해서 실행하는 주체가 바로 ART입니다.

 

출처: developer.android.com

 

 

자바에서는 개발자가 소스 코드를 작성한 후 컴파일하면 클래스 파일이 만들어집니다. 이 클래스 파일을 자바 가상 머신에서 실행합니다. 그런데 안드로이드는 자바 클래스를 런타임 때 그대로 실행하지 않고 DEX 파일로 컴파일합니다. 그리고 DEX 파일을 해석하는 ART에서 실행합니다. 물론 DEX 파일은 안드로이드 스튜디오에서 앱을 빌드할 때 자동으로 생성되므로 개발자가 직접 만들 필요는 없습니다.

 

네이티브 C/C++ 라이브러리 안드로이드 앱은 대부분 자바 프레임워크로 개발하지만 네이티브 C/C++ 라이브러리를 이용할 수도 있는데 이를 안드로이드 NDKnative development kit라고 합니다.
자바 API 프레임워크 앱을 개발할 때 사용하는 자바 API입니다. 이 책에서는 자바 API 프레임워크에서 제공하는 기술을 다루며 이를 이용해 앱의 다양한 기능을 개발합니다.

 

앱 개발 언어


안드로이드가 처음 나왔을 때부터 오랜 기간 자바로 앱을 개발해 왔습니다. 그런데 2017년 구글 IO 행사에서 코틀린을 안드로이드 공식 언어로 지정하면서 이제 안드로이드 개발 언어로는 자바와 코틀린 두 가지를 사용합니다. 코틀린은 이후에 자세하게 소개하겠습니다.


다양한 디바이스


iOS 운영체제를 탑재한 아이폰은 애플에서만 제작할 수 있지만 안드로이드폰은 구글, 삼성, 화웨이 등 다양한 제조업체에서 만들 수 있습니다. 그렇다 보니 사용자는 다양한 폰을 접할 수 있어서 좋지만 앱 개발자는 몇 가지 더 신경 써야 할 점이 생겼습니다.
우선 크기가 다양한 폰에서 앱이 똑같이 보이도록 호환성을 고려해야 합니다. 또한 제조업체에서 폰을 생산할 때는 구글에서 만든 운영체제 API와 주소록 같은 기본 앱 등을 조금씩 바꾸므로 자신이 만든 앱이 여러 장치에서 제대로 동작하는지를 점검해야 합니다.


앱 배포


앱을 사용자에게 배포할 때는 대부분 구글의 플레이 스토어를 이용합니다. 하지만 꼭 플레이 스토어에서만 배포해야 하는 것은 아닙니다. 통신사에서 운영하는 앱 마켓을 이용해 배포할 수도 있고 사용자에게 배포 파일을 직접 전달할 수도 있습니다.