안드로이드 어플리케이션에 대한 각종 정보를 기술한 어플리케이션 명세서
manifest의 사전적 의미는 '나타내다, 드러내다' 이다.
사전적 의미 처럼 이처럼 해당 어플리케이션에 대한 필수적인 정보들을 안드로이드 시스템에 알려준다.
안드로이드 어플리케이션을 구성하는 컴포넌트들(Activity, Service, Broadcast Receiver, Content Provider)을 기술해야 한다.
어플리케이션을 구성하는 Component들에 대한 해당 클래스명을 정의하고, 그 Component가 처리할 수 있는 기능이 무서인지 Intent-filter를 정의
→이를 통해 한 안드로이드 어플리케이션 안에 어떤 Component들이 존재하며, 어떤 조건에 해당 Component가 시작돼야 하는지 안드로이드 플랫폼이 알 수 있다.
안드로이드 어플리케이션이 안드로이드 플랫폼의 제한된 API에 접근하거나 다른 어플리케이션의 제한된 컴포넌트를 사용하기 위해서 필요한 권한을 설정
안드로이드 어플리케이션을 구동하기 위한 최소한의 SDK 버전을 정의
안드로이드 어플리케이션이 사용하는 다른 추가적인 라이브러리들을 정의
기본적으로 AndroidManifest.xml은 루트 요소가 이고, 그 자식으로 요소가 하나 존재한다.
안드로이드 어플리케이션의 패키지명과 버전정보(버전 이름과 버전 코드 등)를 정의
여기서는 안드로이드 어플리케이션을 구성하는 자바 클래스들의 패키지명이 android.sample로 시작
어플리케이션의 제목과 아이콘을 정의하고,밑에는 하나의만 정의된다.
여기서는 안드로이드 어플리케이션 제목이 string 리소스에 있는 app_name 문자열 값으로 설정되어있다.
안드로이드 어플리케이션을 구성하는 네가지 Component 중에 Activity를 정의하는 요소
Activity 클래스명과 Activity의 제목을 정의할 수 있다.
여기서는 네 가지 Activity인 MyMultimediaActivity, PictureActivity, MusicActivity, WallpaperActivity가 해당 안드로이드 어플리케이션에 존재하는 것을 알 수 있다.
해당 Component의 intent-filter를 가리키는 것으로, 해당 Component(Activity,Service,Broadcast Receiver 등)가 어떤 암시적 Intent를 처리할 수 있는지 정의
는 그 밑으로 요소를 정의하여 어떤 작업을 처리할 수 있는지 정의할 수 있다.
요소를 정의하여 Component의 유형이 무엇인지 정의할 수 있다.
여기에 설정된 intent-filter는 해당 Activity가 안드로이드 어플리케이션이 실행될 때 처음 시작되는 main Activity임을 정의하고 있다.
안드로이드 어플리케이션의 리소스접근 및 기능 사용 권한을 정의한다.
여기서는 해당 어플리케이션이 카메라와 바탕화면 배경 그림 설정, 진동 기능을 사용할 수 있도록 권한을 설정하였다.
이 안드로이드 어플리케이션에 포함된 모든 Component에 기본 아이콘 이미지로 설정된다.
android:label : 화면에 표시될 안드로이드 어플리케이션의 제목을 설정
이 안드로이드 어플리케이션에 포함된 모든 Component에 기존제목으로 설정된다.
일반적으로, 다음과 같이 Intent-filter를 설정하면, 해당 Activity를 해당 어플리케이션이 실행되는 진입점으로 설정할 수 있다.
서비스 Component를 정의
밑으로 와 마찬가지로 와 요소를 정의할 수 있다.
<receiver> 밑으로 <activity>와 마찬가지로 <intent-filter>와 <meta-data> 요소를 정의할 수 있다.
<provider> 밑으로는 <grant-uri-permissions>와 <meta-data> 요소를 정의할 수 있다.
이와 같이 Component 외에도 에는 를 자식 XML 요소로 정의할 수 있는데, 는 안드로이드 어플리케이션이 다른 추가적인 라이브러리를 사용할 때 해당 패키지를 정의할 때 사용된다.