본문 바로가기
개발(Development)/Android(안드로이드)

[안드로이드] 매니페스트(AndroidMainfest.xml) 개념과 구조

by 카레유 2021. 7. 11.

1. 매니페스트란?

앱의 패키지, 컴포넌트, 권한, 기기호환성 설정을 관리하는 app > mainfests > AndroidManifest.xml 파일이다.

 

2. 매니페스트의 구조와 설정내용

<manifest>: 패키지

  ㄴ <application>: 컴포넌트

  ㄴ <uses-permission>: 권한

  ㄴ <uses-feature>: 기기호환성

 

위의 각 내용을 상세하게 정리해본다.


# 매니페스트

앱의 1)패키지, 2)구성요소(컴포넌트), 3)권한, 4)기기호환성을 정의하는 환경설정 파일이다.

app > mainfests > AndroidManifest.xml 경로에 위치한다.

 


# 매니페스트 구조

단순한 XML파일로 아래의 중첩 구조를 갖고 있다.

 

<manifest>

  ㄴ <application>

  ㄴ <uses-permission>

  ㄴ <uses-feature>

 

<?xml version="1.0" encoding="utf-8"?>
<manifest>

    <application>
        <activity>
            <intent-filter>
                <action />
                <category />
            </intent-filter>
        </activity>
    </application>
    
    <uses-permission />
    
    <uses-feature />

</manifest>

 

application 태그의 경우, 4대 컴포넌트를 등록하는 태그로 아래의 추가 중첩 구조를 갖는다.

<application>

ㄴ <activity | servcice | provider | receiver>

   ㄴ <intent-filter>

      ㄴ <action>

      ㄴ <category>

      ㄴ <data>


# 매니페스트에서 설정하는 4가지

패키지는 manifest, 컴포넌트는 application, 권한은 uses-permission, 호환성은 uses-feature 태그에서 등록한다

 

1. 패키지 (Package)

- 설정 내용: 앱의 식별자인 패키지 정보를 등록한다.

- 설정 위치: manifest 태그의 package속성

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.projectstudy_java">

 

* 패키지는 앱을 구별하는 식별자로 작용한다.

* R.java에서 리소스를 찾을 때에도 패키지 정보를 활용한다.

* 패키지 정보를 이용해서,  .으로 시작하는 클래스를 "패키지.클래스"로 해석한다.

 

 

 

2. 앱의 구성요소: 컴포넌트(Components)

- 설정 내용: 앱을 구성하는 액티비티, 서비스, 컨텐트프로바이더, 브로드캐스트리시버를 등록한다.

- 설정 위치: manifest > appliaction > activity|service|provider|receiver 태그

 

<manifest>
    <application>
    
        <activity android:name=".MainActivity">
        
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            
        </activity>
        
    </application>
</manifest>

 

* 상위 태그인 application에는 아이콘, 라벨 등의 속성 값을 설정한다.

* 하위 태그인 intent-filter에는 암시적 인텐트(Intent)를 통한 컴포넌트 실행정보를 등록한다.

 

 

 

3. 권한 (Permissions)

- 설정 내용: 전화걸기, 연락처접근 등의 각종 권한정보를 등록한다.

- 설정 위치: manifest > uses-permissions 태그

 

<manifest>

    <uses-permission android:name="android.permission.SEND_SMS"/>

</manifest>

 

 

 

4. 기기 호환성 (Device Compatibility)

- 설정 내용: 앱에서 요구하는 하드웨어/소프트웨어 기능 및 호환되는 기기유형을 등록한다.

- 설정 위치: manifest > uses-feature 태그

<manifest>

    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />

</manifest>

 

* 위에서는 필요한 사양으로 나침반 센서 등록했다.

* 따라서 나침반 센서가 탑재되지 않은 스마트폰은 Google Play Store 에서 설치가 불가능할 것이다.


복잡해보이지만

먼저 큰 그림을 보고, 하나씩 쪼개보면 아주 단순한 구조이다.

 

 

댓글