Android Studio/App Components

Android Manifest

shDev 2026. 3. 2. 20:44

🔷 AndroidManifest.xml이란?

모든 Android 앱에 반드시 존재해야 하는 핵심 설정 파일로, Android 운영체제에게 앱에 대한 필수 정보를 제공하는 역할을 한다.

💡 앱의 설계도(Blueprint) 라고 생각하면 된다. 시스템은 이 파일을 읽고 앱을 설치, 실행, 관리한다.


🔷 Manifest의 역할

역할 설명

앱 신원 정의 앱 이름, 아이콘, 테마 등 기본 정보
컴포넌트 등록 Activity, Service 등 모든 컴포넌트 선언
권한 관리 앱이 필요로 하는 시스템 권한 명시
진입점 지정 앱 실행 시 첫 번째로 열릴 Activity 지정
Intent Filter 앱이 처리할 수 있는 암시적 Intent 정의

🔷 기본 구조

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 권한 선언 -->
    <uses-permission android:name="android.permission.INTERNET"/>

    <!-- 앱 전체 설정 -->
    <application
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.MyApp">

        <!-- 컴포넌트 등록 -->
        <activity android:name=".MainActivity">
            <intent-filter>
                <!-- 앱의 진입점 지정 -->
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <activity
            android:name=".SecondActivity"
            android:label="Second Activity"/>

    </application>

</manifest>

🔷 주요 구성 요소 상세

1️⃣ <manifest> 태그

  • 파일 전체를 감싸는 최상위 루트 태그
  • 앱의 패키지명 등 기본 정보 포함

2️⃣ <application> 태그

앱 전체에 적용되는 전역 설정을 정의한다.

<application
    android:icon="@mipmap/ic_launcher"   <!-- 앱 아이콘 -->
    android:label="My App"               <!-- 앱 이름 -->
    android:theme="@style/Theme.MyApp">  <!-- 앱 전체 테마 -->

3️⃣ <activity> 태그

앱에서 사용하는 모든 Activity는 반드시 여기에 등록해야 한다.

⚠️ Manifest에 등록되지 않은 Activity는 실행 시 크래시 발생!

<activity android:name=".SecondActivity"
          android:label="Second Activity"
          android:theme="@style/Theme.Layout"/>

4️⃣ <intent-filter> 태그

Activity가 어떤 Intent에 반응할지 정의한다.

<intent-filter>
    <!-- 앱의 메인 진입점임을 선언 -->
    <action android:name="android.intent.action.MAIN"/>
    <!-- 런처(홈 화면)에 앱 아이콘으로 표시 -->
    <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

항목 의미

action.MAIN 앱의 시작 진입점
category.LAUNCHER 홈 화면에 아이콘으로 노출

💡 이 두 가지가 함께 선언된 Activity가 앱 실행 시 첫 화면이 된다.


5️⃣ <uses-permission> 태그

앱이 필요로 하는 시스템 권한을 선언한다. 사용자는 앱 설치 시 이 권한 목록을 확인하게 된다.

<!-- 자주 사용되는 권한들 -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

⚠️ Android 6.0(API 23) 이상부터는 일부 위험 권한은 Manifest 선언 외에 런타임에서도 사용자 동의를 별도로 받아야 한다.


🔷 등록 가능한 4대 컴포넌트

<application>
    <activity android:name=".MyActivity"/>         <!-- 화면 -->
    <service android:name=".MyService"/>           <!-- 백그라운드 작업 -->
    <receiver android:name=".MyReceiver"/>         <!-- 브로드캐스트 수신 -->
    <provider android:name=".MyContentProvider"/>  <!-- 데이터 공유 -->
</application>

컴포넌트 역할

Activity 사용자 UI 화면
Service 백그라운드 작업 (음악 재생 등)
BroadcastReceiver 시스템/앱 이벤트 수신
ContentProvider 앱 간 데이터 공유

🔷 ⭐ 핵심 포인트

  1. 모든 컴포넌트는 Manifest에 등록 필수 — 등록 안 하면 앱 크래시!
  2. 진입점은 MAIN + LAUNCHER 조합으로 지정한다.
  3. 권한은 사용 전에 반드시 선언 — Android 6.0 이상은 런타임 권한도 추가로 처리해야 한다.
  4. <application> 태그의 속성으로 앱 전체의 아이콘, 이름, 테마를 일괄 설정할 수 있다.
  5. Manifest는 앱의 공식 신분증이자 시스템과의 계약서라고 생각하자.

'Android Studio > App Components' 카테고리의 다른 글

예제  (0) 2026.03.02
Implicit Intent  (0) 2026.03.02
Explicit Intent  (0) 2026.03.02
Android Activity Lifecycle  (0) 2026.03.02