🔷 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 | 앱 간 데이터 공유 |
🔷 ⭐ 핵심 포인트
- 모든 컴포넌트는 Manifest에 등록 필수 — 등록 안 하면 앱 크래시!
- 진입점은 MAIN + LAUNCHER 조합으로 지정한다.
- 권한은 사용 전에 반드시 선언 — Android 6.0 이상은 런타임 권한도 추가로 처리해야 한다.
- <application> 태그의 속성으로 앱 전체의 아이콘, 이름, 테마를 일괄 설정할 수 있다.
- 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 |