728x90
Manifest란?
Manifest는 앱의 기본 정보와 시스템 권한, 컴포넌트 등을 정의하는 필수적인 설정 파일이다.
앱이 실행될 때 안드로이드 운영체제는 이 파일을 참고하여 앱의 구조와 동작 방식을 이해하고, 필요한 권한과 기능을 적절히 할당한다.
- 주요 속성 : <manifest>, <application>, <activity>, <service>, <receiver>, <uses-permission>, <meta-data>
<manifest> package, xmlns:android <application> allowBackup, icon, label, theme, usesCleartextTraffic <activity> name, exported, launchMode, screenOrientation, theme <service> name, exported, foregroundServiceType <receiver> name, enabled, exported <uses-permission> name (필요한 권한 설정) <meta-data> name, value (앱 설정 값)
- <manifest> 태그속성
매니페스트 파일의 최상위 태그
package 앱의 고유 패키지명을 정의 (예: com.example.myapp) xmlns:android 안드로이드 네임스페이스를 정의 (http://schemas.android.com/apk/res/android) - <application> 태그 속성
앱의 전체적인 설정을 정의
android:allowBackup 앱의 데이터 백업을 허용할지 여부 (true/false) android:icon 앱 아이콘 지정 (@mipmap/ic_launcher) android:label 앱 이름 지정 android:theme 앱의 기본 테마 설정 android:networkSecurityConfig 네트워크 보안 설정 파일 지정 android:supportsRtl 오른쪽에서 왼쪽(RTL) 언어 지원 여부 android:usesCleartextTraffic HTTP 비암호화 트래픽 허용 여부 (true/false) <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="MyApp" android:theme="@style/AppTheme" android:usesCleartextTraffic="false">
- <activity> 태그 속성
앱에서 사용되는 액티비티(화면) 를 정의
android:name 액티비티 클래스명 지정 (예: .MainActivity) android:exported 다른 앱에서 이 액티비티를 호출할 수 있는지 여부 (true/false) android:launchMode 액티비티 실행 방식 (standard, singleTop, singleTask, singleInstance) android:theme 특정 액티비티에 사용할 테마 지정 android:screenOrientation 화면 방향 지정 (portrait, landscape) android:windowSoftInputMode 키보드와 화면 UI의 동작 방식 지정 <activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTask" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>
- <service> 태그 속성
백그라운드에서 실행되는 서비스(Service) 를 정의
android:name 서비스 클래스명 지정 android:exported 다른 앱에서 이 서비스를 사용할 수 있는지 여부 android:foregroundServiceType 포그라운드 서비스 유형 (예: mediaPlayback, location) <service android:name=".MyService" android:exported="false" android:foregroundServiceType="location"/>
- <receiver> 태그 속성
브로드캐스트 리시버(Broadcast Receiver) 를 정의
android:name 리시버 클래스명 지정 android:enabled 리시버 활성화 여부 (true/false) android:exported 다른 앱에서 사용할 수 있는지 여부 <receiver android:name=".MyReceiver" android:enabled="true" android:exported="false"/>
- <uses-permission> 태그 속성
앱에서 필요한 권한을 요청할 때 사용
android:name 요청할 권한의 이름 (예: android.permission.INTERNET) <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
- <meta-data> 태그 속성
추가적인 앱 설정 값을 정의할 때 사용
android:name 메타데이터 키 이름 android:value 설정할 값 <meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_API_KEY_HERE"/>
Manifest의 4대 컴포넌트에 대해 알아보자.
4대 컴포넌트에는 Activity, Service, Broadcast Receiver, Content Provider 가 있다.
Activity (액티비티)
- 화면을 구성하는 요소로 UI를 담당한다.
- 사용자가 앱과 상호작용할 수 있도록 화면을 제공한다.
- 주요 속성
- android:name : 액티비티 클래스명
- android:exported : 외부 앱에서 접근 가능 여부
- android:launchMode : 액티비티 실행 양식
- android:screenOrientation : 화면 방향 설정
<activity android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTask"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
Service (서비스)
- UI 없이 백그라운드에서 실행되는 컴포넌트
- 주요 속성
- android: name : 서비스 클래스명
- android:exported : 다른 앱에서 이 서비스를 사용할 수 있는지 여부
- android:foregroundServiceType : 포그라운드 서비스 유형 지정 (예) mediaPlayback, location
<service android:name=".MyService"
android:exported="false"
android:foregroundServiceType="location"/>
Broadcast Receiver (브로드캐스트 리시버)
- 시스템 또는 다른 앱에서 발생하는 이벤트를 감지하고 처리하는 역할
- 주요 속성
- android:name : 리시버 클래스명
- android:enabled : 리시버 활성화 여부 (trud/false)
- android:exported : 다른 앱에서 사용할 수 있는지 여부
<receiver android:name=".MyReceiver"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Content Provider (콘텐츠 프로바이더)
- 앱 간 데이터 공유를 가능하게 해주는 컴포넌트
- 주요 속성
- android:name : 콘텐츠 프로바이더 클래스명
- android:authorities : 프로바이더의 고유 식별자
- android:exported : 다른 앱에서 접근 가능 여부
728x90
'Android' 카테고리의 다른 글
[Android/Kotlin] Activity와 AppCompatActivity (2) | 2025.03.25 |
---|---|
[Android] 안드로이드 레이아웃(Layout) (0) | 2025.03.19 |
[Android] 안드로이드 아키텍처(Architecture) 권장사항 (2) | 2025.03.17 |