play/Android

[Android] 안드로이드 앱 주요 구성 요소

카고형 2023. 6. 29. 01:35
728x90

[Android] OS Architecture : 운영체제 구조 정리

[Android] 공격 방식 정리


 

Android Appliction의 주요 구성 요소

안드로이드 앱플리케이션은 다양한 구성 요소로 만들어지는데 AndroidMeanifest.xml 파일은 앱 개발 시 중요한 역할을 하며, 앱의 구성, 권한, 기능, 상호작용 등을 명확하게 정의하여 안드로이드 시스템과 사용자에게 필요한 정보를 제공합니다.

1. 앱 구성 요소 등록

AndroidManifest 파일은 앱의 주요 4대 컴포넌트 구성 요소인 액티비티, 서비스, 브로드캐스트 리시버, 콘텐트 프로바이더를 등록합니다. 각 구성 요소는 AndroidManifest에 등록되어 시스템이 알아차릴 수 있고, 해당 구성 요소를 사용할 수 있도록 허용합니다.


2. 앱 권한 설정

AndroidManifest 파일은 앱이 필요로 하는 시스템 권한을 정의합니다. 권한은 앱이 특정 기능이나 리소스에 접근하기 위해 필요한 권한을 명시합니다. 예를 들어, 인터넷에 접근해야 하는 앱은 "INTERNET" 권한을 명시하여 권한을 허용받아야 합니다.

3. 앱 구성 설정

AndroidManifest 파일은 앱의 기본 구성 설정을 정의합니다. 예를 들어, 애플리케이션의 이름, 아이콘, 테마, 런처 액티비티 등을 설정할 수 있습니다. 또한, 앱이 사용하는 하드웨어 기능이나 소프트웨어 기능에 대한 요구사항을 명시할 수도 있습니다.

4. 앱 컴포넌트 간 상호작용 설정: 

AndroidManifest 파일은 앱의 다양한 구성 요소 간의 상호작용을 정의합니다. 예를 들어, 액티비티 간의 화면 전환을 설정하거나 서비스와 브로드캐스트 리시버 간의 통신을 설정할 수 있습니다.

 

AndroidManifest.xml 분석

AndroidManifest.xml 예시

주요 4대 컴포넌트

  • 액티비티(Activity)
    • Activity는 사용자 인터페이스(UI)를 표시하고 사용자와 상호작용하는 역할을 합니다. 앱의 화면 단위로 각각의 Activity는 AndroidManifest 파일에 등록되어야 합니다. 예를 들어, 앱의 메인 화면이나 설정 화면 등이 액티비티로 정의되고 AndroidManifest 파일에 등록됩니다.
  • 서비스(Service)
    • 서비스는 백그라운드에서 실행되는 컴포넌트로서, 오랫동안 실행되는 작업이나 원격 프로세스 간 통신 등을 처리합니다. 예를 들어, 음악 재생 서비스나 네트워크 요청을 처리하는 서비스는 AndroidManifest 파일에 등록되어야 합니다.
  • 브로드캐스트 리시버(Broadcast Receiver)
    • 브로드캐스트 리시버는 안드로이드 시스템 또는 다른 앱에서 발송한 브로드캐스트 메시지를 수신하고 처리하는 컴포넌트입니다. 예를 들어, 배터리 부족 알림이나 네트워크 연결 상태 변경 등의 브로드캐스트 메시지를 수신하기 위해 브로드캐스트 리시버를 사용하며, 이를 AndroidManifest 파일에 등록합니다.
  • 콘텐트 프로바이더(Content Provider)
    • 콘텐트 프로바이더는 애플리케이션 간 데이터 공유를 위한 인터페이스를 제공하는 컴포넌트입니다. 다른 앱에서 데이터를 요청하거나 공유하기 위해 콘텐트 프로바이더를 사용하며, AndroidManifest 파일에 등록합니다. 예를 들어, 주소록 데이터나 이미지 데이터 등을 다른 앱과 공유하기 위해 콘텐트 프로바이더를 사용합니다.

 

이외에  AndroidManifest에서는 고유 패키지명, 사용 권한 정의, 응용 프로그램과 함께 사용되는 라이브러리 정보등이 명시되어 있습니다.


4대 컴포넌트 생명주기(Lifecycle)

각각의 주요 4대 컴포넌트인 액티비티, 서비스, 브로드캐스트 리시버, 콘텐트 프로바이더는 각자의 생명주기(lifecycle)를 가지고 있습니다. 생명주기 함수는 컴포넌트의 생성, 시작, 일시 정지, 재개, 종료 등과 같은 상태 변화에 따라 호출되는 콜백 메서드입니다. 이를 통해 앱은 각 컴포넌트의 상태를 관리하고 필요한 작업을 수행할 수 있습니다.  코드 분석 시 4대 컴포넌트에 생명 주기를 보면 쉽게 코드를 따라갈 수 있다



Activity

  • onCreate(): 액티비티가 생성될 때 호출됩니다. 액티비티의 초기화 작업을 수행하는 데 사용됩니다.
  • onStart(): 액티비티가 사용자에게 보이기 직전에 호출됩니다. 액티비티가 화면에 표시되기 전에 필요한 준비 작업을 수행합니다.
  • onResume(): 액티비티가 사용자와 상호작용하기 시작할 때 호출됩니다. 액티비티가 포그라운드로 진입하고 사용자 입력을 처리합니다.
  • onPause(): 다른 액티비티가 포그라운드로 나타날 때 호출됩니다. 현재 액티비티가 더 이상 포커스를 가지지 않게 되어 임시적으로 일시 정지 상태로 전환됩니다.
  • onStop(): 액티비티가 더 이상 사용자에게 보이지 않을 때 호출됩니다. 액티비티가 백그라운드로 이동하고 정지됩니다.
  • onDestroy(): 액티비티가 소멸될 때 호출됩니다. 액티비티의 리소스 해제나 정리 작업을 수행합니다.


Service

  • onCreate(): 서비스가 생성될 때 호출됩니다. 서비스의 초기화 작업을 수행하는 데 사용됩니다.
  • onStartCommand(): 서비스가 시작될 때 호출됩니다. 서비스가 실행되는 동안 수행할 작업을 정의하고, 인텐트에 따라 추가 작업을 수행합니다.
  • onDestroy(): 서비스가 소멸될 때 호출됩니다. 서비스의 리소스 해제나 정리 작업을 수행합니다.


Broadcast Receiver

  • onReceive(): 브로드캐스트 메시지를 수신했을 때 호출됩니다. 메시지 처리를 위한 코드를 구현하는 데 사용됩니다.


Content Provider

  • onCreate(): 콘텐트 프로바이더가 생성될 때 호출됩니다. 초기화 작업을 수행하는 데 사용됩니다.
  • query(): 데이터 조회를 위해 호출됩니다. 다른 앱이 데이터를 요청할 때 호출되며, 요청에 대한 쿼리 결과를 반환합니다.
  • insert(): 데이터 삽입을 위해 호출됩니다. 다른 앱이 데이터를 추가할 때 호출되며, 데이터베이스에 새로운 레코드를 추가합니다.
  • update(): 데이터 업데이트를 위해 호출됩니다. 다른 앱이 데이터를 수정할 때 호출되며, 데이터베이스의 레코드를 업데이트합니다.
  • delete(): 데이터 삭제를 위해 호출됩니다. 다른 앱이 데이터를 삭제할 때 호출되며, 데이터베이스에서 해당 레코드를 삭제합니다.

 

AndroidManifest.xml 분석은 사용 권한과 주요 4대 컴포넌트 보면서 해당앱이 어떤 권한을 요구하는지를 파악하고, 위험한 권한 얼마나 있는지 해당 권한으로 무엇을 할 수 있는지 생각하고, 해당앱의 정보와 Activity, Service, Broadcast Receiver, Content Provider를 보면서 어떤 앱이구나 유추를 해볼 수 있다.

 

728x90