Android Application Structure

Table of Contents

  1. Android Application Structure
    1. Android Application Structure
    2. API
    3. Sandbox
    4. Packaging
    5. Manifest files
    6. App components
    7. IPC (Inter-Process Communication)

Android Application Structure

안드로이드 어플리케이션 구조에는 다음과 같이 구성이 되어있습니다.

  1. API
  2. Sandbox
  3. Packaging
  4. Manifest file
  5. App Components
  6. IPC

API

안드로이드에서 App이 실행될때 여러 API들을 호출하는것을 볼 수 있습니다. API를 Native Development kit에서 사용할수도 있고 (C, C++을 이용하여 코드를 작성해야됩니다).

이렇게 API는 하드웨어나 OS 컴포넌트들을 NDK의 C, C++을 사용하여 접근할수 있게 해주고, SDK를 이용하여 Java API와도 통신할수 있게 합니다.

이러한 이유는 해당 API를 사용을 안하게 되면 처음부터 다 만들어야되기 때문에 이런 불편함을 줄일수 있게 됩니다.

Sandbox

안드로이드에서는 샌드박싱을 필수로 진행을 합니다. 안드로이드 샌드박싱은 각각의 APP마다 VM으로 돌아가며 앱 마다 따로 프포레스, 디렉토리, 유저가 있습니다.

앱들 사이에서는 따로 sharaedUserId라는 것을 이용하여 공유가 될수도 있습니다.

Packaging

안드로이드의 패키징은 여러 패키징이 존재하겠지만 APKAAB가 있습니다.

AAB는 2021년부터 새로운 패키징으로 진행이 됩니다.

해당 파일은 마치 zip 파일 형식과 비슷하며, 압축을 풀었을때, 여러 폴더와 파일들을 볼 수 있습니다.

패키징 압축을 해제하면 다양한 폴더들을 볼 수 있는데, Manifest파일이나, lib 폴더 (라이브러리 폴더) 와 같은 다양한 폴더들을 볼 수 있습니다.

Manifest files

안드로이드의 Manifest 파일은 다음과 같이 구성이 되어있습니다.

  1. App components - Main Activity의 이름 등 다양한 컴포넌트 정의
  2. Permissions - 해당 어플리케이션이 어떠한 퍼미션이 필요한지 (예를들어 External API가 필요하다 하면 인터넷 Permission이 있어야 될것 입니다.)
  3. Flags

App components

안드로이드의 App components는 다음과 같이 구성이 되어있습니다.

  1. Activities - Main Activity로 시작화면을 정할수 있습니다. 다른 엑티비티에서 여러가지의 메소드를 정의를 하고 어떻게 실행할것인지 정의 할수 있습니다.
  2. Services - 백그라운드에서 돌아가는 프로세스지만 앱 구성중 하나인 것을 말합니다.
  3. Broadcast receivers - 다른 앱들에서부터 정보를 가져오는 역할을 담당합니다.
  4. Content providers - SQLite 데이터 베이스랑 통신을 하거나 비슷한 역할을 합니다.

IPC (Inter-Process Communication)

IPC란 Inter-Process Communication을 의미하며, 안전하게 데이터를 어플리케이션이나 샌드박스들 사이에서 주고받는것을 의미합니다.

미들웨어 (Middleware) 를 의미하며 바인더 프레임 워크를 사용합니다.

안드로이드 앱들은 다 각기 다른 Manifest 파일이나, Activity를 가지고 있기때문에 통신을 Intent라는 것을 활용하여 서로 어떠한 action을 다른 App component나 다른 App에 요청을 합니다.

쉽게 말해서 Activity는 안드로이드 앱의 Major Block을 이야기하고, IntentActivity들의 사이간의 Communication을 담당합니다. 허나 다른 App들간의 통신도 가능합니다.

Manifest 파일에서는 Activity들도 define이 되지만 Intent filter도 Manifest안에서 정의가 됩니다, 해당 Intent Filter에서는 어떤 엑티비티가 뭘 할수 있는지 정의를 합니다.

<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

위의 예시 코드를 보면 MainActivityMAIN 메소드를 쓸수있고, LAUNCHER라는 메소드를 쓸수있다는것을 알수 있습니다.


Back to top

Copyright © 2025 Amer1can0 본 블로그는 보안 관련 정보를 공유하는 것을 목적으로 합니다. 블로그에 게시된 내용을 악의적인 목적으로 사용하거나 타인에게 피해를 주는 행위는 엄격히 금지 됩니다. 이러한 모든 불법적 행위 및 그로 인해 발생하는 모든 책임은 전적으로 행위자 본인에게 있습니다. 블로그 운영자는 어떠한 책임도 지지 않음을 알려드립니다.