본문 바로가기
Android/Android 기초

[Android] 안드로이드 구조와 동작 원리(2) - 구성 요소 및 빌드 과정

by 태크민 2023. 8. 29.

안드로이드 구성 요소 (컴포넌트)

안드로이드 4대 구성요소

안드로이드의 앱(Application)은 4대 구성요소를 통합 관리하는 번들의 개념이다.

구성요소로는 Activity, Service, Broadcast Receiver, Content Provider가 있다.

그럼, 안드로이드의 구성요소를 살펴보자.

요번 포스팅은 간단하게만 알아볼 것이며, 각 구성요소에 대한 자세한 내용은 다음 포스팅에 작성할 예정이다.


 

Activity

사용자와 상호작용하기 위한 진입점이다. UI를 포함한 하나의 화면 단위를 나타낸다.

즉, 화면에 UI를 포함하기 위한 틀이라고 보면된다.

액티비티는 다른 요소들과 다르게 Lifecycle이 존재한다.

 


 

Service

별도의 UI를 제공하지 않고 백그라운드에서 앱을 실행하게 해주는 다목적 진입점이다.

예를 들어, 우리가 웹툰을 보면서 백그라운드에서 음악을 재생하고 싶을 때의 동작을 구현해주는 역할을 한다.

뿐만 아니라 다른 앱에서 서비스를 통해 백그라운드에서 서비스 동작을 수행할 수 있다.

 

이러한 서비스에는 포그라운드, 백그라운드, 바인드 세 가지 유형이 존재한다.

 


 

Broadcast Receiver

운영체제가 메시지를 받으면 실행되는 실행 단위를 말하는데, Broadcast는 '방송하다', '광고하다'라는 사전적 의미를 가지고 있다.

안드로이드에서 Broadcast는 문자, 전화 등의 알림을 받고 방송을 해주는 기능이라고 생각하면 이해하기 쉽다. 이 방송은 Intent라는 객체를 통해 발송하게 되는데 이를 수신하는 것이 바로 Broadcast Receiver이다.

즉, 앱이 Broadcast를 전달받기 위해서는 Broadcast Receiver를 등록해야 한다.

Broadcast Receiver는 다음 두가지 형태로 등록이 가능하다.

  1. 정적 Broadcast Receiver: AndroidManifest.xml에 선언하여 앱 설치 시 receiver를 등록
  2. 동적 Broadcast Receiver: 앱이 실행중일 때 receiver를 실행, 소스 코드에서 등록

 


 

Content Provider

데이터를 저장하는 역할을 한다. 응용프로그램(앱)끼리 데이터를 공유하는 방법이다.

앱에서 Content Provider를 구현하면 다른 앱에서는 Content Resolver를 통해 데이터를 전달 받을 수 있다.

 


 

안드로이드 빌드 과정

Android Studio에서 디버그 및 릴리즈를 실행하면 다음과 같은 프로세스를 통해 우리에게 apk 또는 aab 형식의 파일을 제공해준다.

  1. 작성된 소스 코드 및 리소스 파일, AIDL 파일이나 Gradle을 통해 의존성으로 추가한 모듈/라이브러리를 컴파일러가 변환을 한다. 이 때, 소스 코드는 DEX(Dalvik Executalbe)파일로 변환하고 그 외 모든 것들은 컴파일된 리소스로 변환한다.
  2. 패키저는 DEX파일과 컴파일된 리소스를 결합하여 APK 또는 AAB를 만든다.
  3. 만약 Play Store나 기기에 설치할려면 키스토어를 통해 APK/AAB에 서명을 해야 한다.
  4. 최종 APK를 생성하기 전에, 패키저는 앱이 기기에서 실행될 때 더 적은 메모리를 사용하도록 앱의 최적화를 위해 zipalign 도구를 사용한다.