[Android] AndroidManifest.xml 들여다보기

제철맞은생선·2022년 12월 25일

ANDROID

목록 보기
1/12
post-thumbnail

프로젝트가 생성이 되었을 때, 따끈따끈한 초기상태의 AndroidManifest.xml 파일을 들여다보자.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.BoiledeggApp"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <meta-data
                android:name="android.app.lib_name"
                android:value="" />
        </activity>
    </application>

</manifest>

1. manifest

  • AndroidManifest.xml의 루트 요소다.
  • 단 하나의 Application만을 요소로 포함해야 한다.
  • xmlns: 'xml namespace'의 약자. 'android:'를 루트 명시 없이 사용할 수 있게 해준다.

2. application

  • application 선언이다.
  • 애플리케이션의 각 구성요소를 선언하는 하위 요소를 포함한다.
  • 모든 구성요소에 영향을 줄 수 있는 속성을 가지고 있다.
    application의 각 구성 요소들과 속성에 대한 정보는 여기서 찾도록 하자!

    // 백업 관련 코드들
    android:allowBackup="true"
    android:dataExtractionRules="@xml/data_extraction_rules"
    android:fullBackupContent="@xml/backup_rules"
    // 전체 애플리케이션의 아이콘
    android:icon="@mipmap/ic_launcher"
    // 전체 애플리케이션을 나타내는 라벨
    android:label="@string/app_name"
    // 전체 애플리케이션을 나타내는 둥근 모양의 아이콘
    android:roundIcon="@mipmap/ic_launcher_round"
    // 오른쪽에서 왼쪽 레이아웃 지원 여부
    android:supportsRtl="true"
    // 애플리케이션의 모든 활동의 기본 테마를 정의하는 스타일 리소스 참조
    android:theme="@style/Theme.BoiledeggApp"
    // 해당 버전에서 생기지 않는 오류는 명시하지 않도록 하는 구문
    tools:targetApi="31"

3. activity

  • 애플리케이션의 시각적 사용자 인터페이스 요소를 구현하는 활동을 선언한다.
  • 애플리케이션 내의 모든 활동은 이 activity 요소로 나타나야 한다.
  • 여기에 선언되지 않은 활동은 시스템에 표시되지 않으며 실행되지 않는다.
    activity의 각 구성 요소들과 속성에 대한 정보는 여기서 찾도록 하자!

    // 다른 애플리케이션의 구성요소에서 활동을 시작할 수 있는지를 설정
    android:exported="true"

(다음으로 나오는 3개 속성은 위 코드에는 없지만 중요한 속성)

4. service

  • activity와 달리 시각적인 요소는 없다.
  • 오래 실행되는 백그라운드 작업 혹은 다른 애플리케이션에서 호출할 수 있는 리치 커뮤니케이션 API를 구현하는 데 사용된다.
    더 자세한 설명은 여기서

5. receiver

  • BroadCast Receiver를 정의한다.
  • BroadCast Receiver를 통해 애플리케이션의 다른 구성요소가 동작하지 않더라도 시스템이나 다른 애플리케이션에서 보내는 intent를 수신할 수 있다.
  • intent filter을 정의하여 어떠한 브로드캐스트 메시지에 반응할지를 지정할 수 있다.
    더 자세한 설명은 여기서

6. provider

  • content provider 을 정의한다.
  • content provider는 어플리케이션 내의 데이터베이스를 다른 애플리케이션가 공유할 수 있도록 해주는 역할을 한다.
    더 자세한 설명은 여기서

7. intent-filter

  • 상위 구성요소들이 응답할 수 있는 intent의 유형을 정의한다.
  • 전달되는 유형의 수신 인텐트로 구성요소를 열고 이 구성요소에 유의미하지 않은 인텐트를 필터링한다.
    더 자세한 설명은 여기서

8. action

  • intent-filter에 작업을 추가한다.
  • intent-filter 안에 action이 하나 이상 있어야 한다.

    // 제일 먼저 실행되는 action
    action android:name="android.intent.action.MAIN"

9. category

  • component의 유형이 무엇인지 정의할 수 있다.

10. uses-permission

  • 앱이 올바르게 작동하기 위해 사용자가 반드시 부여해야 하는 시스템 권한이다.
  • 여기에 정의된 권한은 애플리케이션 설치시 해당 어플리케이션이 어떤 권한을 요구하는지를 사용자에게 보여준다.

    // 권한 이름
    android:name="string"
    // 앱에 이 권한을 부여해야 하는 최상위 API 수준
    android:maxSdkVersion="integer"

11. meta-data

  • 상위 구성요소에 제공될 수 있는 추가 임의 데이터 항목의 이름-값 쌍이다.

    android:name="android.app.lib_name"
    android:value=""


안드로이드 공식 문서

0개의 댓글