본문 바로가기
개발/Android

매니페스트(AndroidManifest)

by Anti-fragilista 2021. 2. 1.

1. 안드로이드 메니페스트란?

  • 안드로이드 어플리케이션에 대한 각종 정보를 기술한 어플리케이션 명세서

 

2. 역할

  • 앱에 대한 필수적인 정보를 안드로이드 빌드 툴과 Android OS, 그리고 구글 플레이에 제공

 

3. 특징

  • Android 시스템이 앱의 구성 컴포넌트를 시작 할 때 시스템이 우선적으로 앱의 메니페스트 파일을 읽어 해당 컴포넌트가 존재하는지 확인
  • AndroidManifest.xml 파일은 프로젝트의 루트 디렉토리에 있어야 함(별도의 설정이 없을 시 src/main) 위치
  • 매니페스트 파일의 루트 요소(<manifest> 태그)는 앱의 패키지 이름에 대한 특성이 필요함
  • 앱을 최종 애플리케이션 패키지(APK)로 빌드하는동안 Android 빌드 도구가 package 특성을 사용하는 경우는다음과 같다

 

1. App Resource에 접근하는데 사용되는 클래스의 네임스페이스로 적용.

 (예: 아래 매니페스트에 명시된 바로는 R 클래스 생성 시 com.example.myapp.R이라는 이름으로 생성)

 

2. 매니페스트 파일 내에서 선언된 상대경로에 적용.

 (예: 아래 매니페스트를 사용하면 <activity android:name=".MainActivity">로 선언된 액티비티는 com.example.myapp.MainActivity를 가리키게 됨

AndroidManifest.xml

 

4. 기술된 내용

  • 애플리케이션의 패키지 정보, 버전 정보
  • 앱에서 사용되는 컴포넌트 정보(Activity, Service, Broadcast Receiver, Content Provider)
  • Permission(예: 인터넷 액세스, 사용자의 연락처에 대한 읽기 엑세스 등)
  • 앱에서 요구하는 최소 Android 프레임워크 API 레벨 선언
  • 앱이 링크되어야 하는 API 라이브러리(예: Google Maps 라이브러리)
  • 앱에서 사용하거나 요구하는 하드웨어 및 소프트웨어 기능(예: 카메라, 블루투스 서비스, 멀티터치 화면 등)
    • 이에 따라 앱을 Google Play에 설치 할 수 있는 기기의 종류가 달라짐

 

5. 매니페스트 파일에 들어갈 수 있는 항목 태그들

<action> : 인텐트 필터에 작업을 추가한다.

<activity> : 액티비티 구성 요소를 선언한다.

<activity-alias> : 액티비티의 별명을 선언한다.

<application> : 애플리케이션을 선언한다.

<category> : 인텐트 필터에 카테고리 이름을 추가한다.

<compatible-screens> : 애플리케이션과 호환되는 각 화면 구성을 지정한다.

<data> : 인텐트 필터에 데이터 사양을 추가한다.

<grant-uri-permission> : 상위 콘텐츠 제공자가 액세스할 권한이 있는 앱 데이터의 하위 집합을 지정한다.

<instrumentation>: 애플리케이션과 시스템의 상호작용을 모니터링할 수 있는Instrumentation 클래스를 선언한다.

<intent-filter>: 액티비티, 서비스 또는 Broadcast Receiver가 응답할 수 있는 인텐트 유형을 지정한다. <manifest>:AndroidManifest.xml 파일의 루트 요소이다.

<meta-data> :상위 구성 요소에 제공할 수 있는 추가적인 임의의 데이터 항목에 대한 이름-값 쌍이다.

<path-permission> :콘텐츠 제공자 내에서 특정 데이터 하위 집합에 대한 경로와 필수 권한을 정의한다.

<permission> :이 애플리케이션 또는 다른 애플리케이션의 각 구성 요소나 기능에 대한 액세스를 제한하는 데 사용하는 보안 권한을 선언한다.

<permission-group> : 관련 권한의 논리적 집합에 대한 이름을 선언한다.

<permission-tree> :권한 트리의 기본 이름을 선언한다.

<provider> : 콘텐츠 제공자 구성 요소를 선언한다.

<receiver> : Broadcast Receiver 구성 요소를 선언한다.

<service> : 서비스 구성 요소를 선언한다.

<supports-gl-texture> : 앱이 지원하는 단일 GL 텍스처 압축을 선언한다.

<supports-screens> :앱이 지원하는 화면 크기를 선언하고 앱이 지원하는 것보다 큰 화면에 대해서는 화면 호환성 모드를 활성화한다.

<uses-configuration> : 애플리케이션이 요구하는 특정 입력 기능을 나타낸다.

<uses-feature>:애플리케이션이 사용하는 단일 하드웨어 또는 소프트웨어 기능을 선언한다.

<uses-library> :애플리케이션과 링크되어야 하는 공유 라이브러리를 지정한다.

<ueses-permission>: 앱이 올바르게 작동하기 위해 사용자가 반드시 부여해야 하는 시스템 권한이다.

<uses-sdk>:하나 이상의 Android 플랫폼 버전과의 애플리케이션 호환성을 API 레벨 정수로 표시할 수 있다.

 

 

참고자료

developer.android.com/guide/topics/manifest/manifest-intro?hl=ko

https://readystory.tistory.com/187?category=861095

https://hijjang2.tistory.com/258

jitolit.tistory.com/112

 

'개발 > Android' 카테고리의 다른 글

Activity(액티비티)  (0) 2021.02.02