1. 안드로이드 매니페스트(AndroidMainifest)란
안드로이드 어플리케이션에 대한 각종 정보를 기술한 어플리케이션 명세서
2. AndroidMainifest.xml에 기술된 내용
- 안드로이드 어플리케이션을 구성하는 컴포넌트들(Activity, Service, Broadcast Receiver, Content Provider)을 기술해야 한다.
- 어플리케이션을 구성하는 Component들에 대한 해당 클래스명을 정의하고, 그 Component가 처리할 수 있는 기능이 무서인지 Intent-filter를 정의
> 이를 통해 한 안드로이드 어플리케이션 안에 어떤 Component들이 존재하며, 어떤 조건에 해당 Component가 시작돼야 하는지 안드로이드 플랫폼이 알 수 있다.
- 안드로이드 어플리케이션이 안드로이드 플랫폼의 제한된 API에 접근하거나 다른 어플리케이션의 제한된 컴포넌트를 사용하기 위해서 필요한 권한을 설정
- 안드로이드 어플리케이션을 구동하기 위한 최소한의 SDK 버전을 정의
- 안드로이드 어플리케이션이 사용하는 다른 추가적인 라이브러리들을 정의
3. AndroidMainifest.xml
기본적으로 AndroidManifest.xml은 루트 요소가 <manifest>이고, 그 자식으로 <application> 요소가 하나 존재한다.
① <manifest>
안드로이드 어플리케이션의 패키지명과 버전정보(버전 이름과 버전 코드 등)를 정의
여기서는 안드로이드 어플리케이션을 구성하는 자바 클래스들의 패키지명이 android.sample로 시작한다.
② <application>
어플리케이션의 제목과 아이콘을 정의하고, <manifest> 밑에는 하나의 <application>만 정의된다.
여기서는 안드로이드 어플리케이션 제목이 string 리소스에 있는 app_name 문자열 값으로 설정되어있다.
③ <activity>
안드로이드 어플리케이션을 구성하는 네가지 Component 중에 Activity를 정의하는 요소
Activity 클래스명과 Activity의 제목을 정의할 수 있다.
여기서는 네 가지 Activity인 MyMultimediaActivity, PictureActivity, MusicActivity, WallpaperActivity가 해당 안드로이드 어플리케이션에 존재하는 것을 알 수 있다.
④ <intent-filter>
해당 Component의 intent-filter를 가리키는 것으로, 해당 Component(Activity,Service,Broadcast Receiver 등)가 어떤 암시적 Intent를 처리할 수 있는지 정의
<intent-filter>는 그 밑으로 <action> 요소를 정의하여 어떤 작업을 처리할 수 있는지 정의할 수 있다.
<category> 요소를 정의하여 Component의 유형이 무엇인지 정의할 수 있다.
여기에 설정된 intent-filter는 해당 Activity가 안드로이드 어플리케이션이 실행될 때 처음 시작되는 main Activity임을 정의하고 있다.
⑤ <uses-permission>
안드로이드 어플리케이션의 리소스접근 및 기능 사용 권한을 정의한다.
여기서는 해당 어플리케이션이 카메라와 바탕화면 배경 그림 설정, 진동 기능을 사용할 수 있도록 권한을 설정하였다.
4. <manifest> 밑에 정의될 수 있는 주요 XML요소
5. <application>에 정의될 수 있는 주요 속성
1) <application>
- android:icon : 화면에 표시될 안드로이드 어플리케이션의 아이콘 이미지를 설정
이 안드로이드 어플리케이션에 포함된 모든 Component에 기본 아이콘 이미지로 설정된다.
- android:label : 화면에 표시될 안드로이드 어플리케이션의 제목을 설정
이 안드로이드 어플리케이션에 포함된 모든 Component에 기존제목으로 설정된다.
2) <activity>
- Activity Component를 정의
- android:name : 속성을 통해 Activity 클래스명을 설정할 수 있다.
- android:icon와 android:label 속성을 재정의하여 해당 Activity만의 아이콘 이미지와 제목을 설정할 수 있다.
일반적으로, 다음과 같이 Intent-filter를 설정하면, 해당 Activity를 해당 어플리케이션이 실행되는 진입점으로 설정할 수 있다.
3) <service>
- 서비스 Component를 정의
- android:name : 속성을 통해 서비스 클래스명을 설정
- android:icon와 android:label 속성을 재정의하여 해당 서비스만의 아이콘 이미지와 제목을 설정할 수 있다.
<service> 밑으로 <activity>와 마찬가지로 <intent-filter>와 <meta-data> 요소를 정의할 수 있다.
4) <receiver>
- Boradcast Receiver Component를 정의
- android:name 속성을 통해 Broadcast Receiver 클래스명을 설정할 수 있다.
- android:icon와 android:label 속성을 재정의하여 해당 Broadcast Receiver만의 아이콘 이미지와 제목을 설정할 수 있다.
<receiver> 밑으로 <activity>와 마찬가지로 <intent-filter>와 <meta-data> 요소를 정의할 수 있다.
5) <provider>
- Content Provider Component를 정의
- android:name 속성을 통해 Content Provider 클래스명을 설정할 수 있다.
- android:icon 과 android:label 속성을 재정의하여 해당 Content Provider만의 아이콘 이미지와 제목을 설정할 수 있다.
<provider> 밑으로는 <grant-uri-permissions>와 <meta-data> 요소를 정의할 수 있다.
6) <uses-library>
이와 같이 Component 외에도 <application>에는 <uses-library>를 자식 XML 요소로 정의할 수 있는데, <uses-library>는 안드로이드 어플리케이션이 다른 추가적인 라이브러리를 사용할 때 해당 패키지를 정의할 때 사용된다.
'■ Android > Study' 카테고리의 다른 글
[Android] 안드로이드 프로파일러(profiler) - "측정하는거?" (0) | 2020.04.24 |
---|---|
[Android] 위험 권한 및 권한 그룹 (0) | 2020.01.12 |
액티비티 구성요소 4가지 (0) | 2020.01.10 |
[Android] Activity 생명주기(Life Cycle) (0) | 2020.01.07 |
인플레이션,레이아웃인플레이션 이란? (0) | 2020.01.06 |