본문 바로가기
공부/Android

AndroidManifest

by svcbn 2025. 12. 11.

12/10

 

 

오늘도 SDK 연결을 위한 기반 작업 이라고 쓰고 시행착오 를 잔뜩 했다. 이번달 안에 전달해야 한다고 해서 열심히 할 수 밖에 없음.. 그 중 오늘 세팅했던 AndroidManifest 를 알아보자.

 

AndroidManifest

사실 xml 파일로만 사용되고 있어서, .xml 을 붙여서 말해도 같은 것을 뜻한다. 아무튼 모든 안드로이드 애플리케이션 프로젝트의 루트 디렉터리에 위치해야 하는 필수 구성 파일.
뭐하는 파일이길래 필수인가 하면, 안드로이드 시스템, 빌드 도구 및 Google Play 스토어에 앱에 대한 필수 정보를 설명하는 역할을 한다.

 

주요 목적

앱 식별
앱의 고유한 패키지 이름, 버전 코드, 버전 이름 등 메타데이터를 정의한다.

컴포넌트 선언
앱을 구성하는 핵심 컨포넌트인, 액티비티 / 서비스 / 브로드캐스트 리시버 / 콘텐츠 프로바이더 를 시스템에 선언하여, 시스템이 해당 컴포넌트를 인식하고 실행할 수 있도록 한다.

권한 요청
카메라, 인터넷 접속, 위치 정보 등 민감한 정보나 시스템 리소스에 접근하기 위해 필요한 권한을 명시한다.

하드웨어 / 소프트웨어 요구사항 지정
앱이 정상적으로 작동하기 위해 필요한 최소 SDK 버전, 화면 크기, 필수 하드웨어 기능 등을 지정하여, Google Play 스토어에서 호환되는 기기에만 앱이 표시되도록 한다.

인텐트 필터 정의
앱의 컴포넌트가 특정 유형의 인텐트(다른 앱 또는 시스템에서 보낸 요청) 에 응답할 수 있도록 인텐트 필터를 정의한다.

 

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

    <!-- 권한 선언 -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CAMERA" />

    <!-- 애플리케이션 정보 -->
    <application
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">

        <!-- 액티비티 선언 및 시작점 지정 -->
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- 기타 컴포넌트 (서비스, 리시버 등) 선언 -->
        <service android:name=".MyBackgroundService" />

    </application>
</manifest>

적당히 합쳐서 예시를 들어 보면 이런 형태를 띄게 된다.
각 순서는 바뀌어도 상관 없으며, 여러개여도 상관 없이 순서대로 적용된다. 제일 마지막으로 <application> 요소만 오면 되는 식.
모든 속성은 선택사항이기에 없어도 괜찮지만, <manifest> 와 <application> 은 존재해야 하고, 한 번씩만 실행되어야 한다.

안드로이드 스튜디오를 통해 빌드한다면 매니페스트 파일이 자동 생성되고, 대부분의 기본적인 요소들이 추가된다고.

자세한 각 항목에 대한 설명이나, 용례를 알고 싶다면, 공식문서에 잘 나열되어 있으니 이쪽을 보는 것을 추천한다. 내 경우에는 중국 통합 결제 모듈인 MidasPay SDK 가 예제가 너무 옛날 문서라서.. 이미 보안 문제로 민감하거나 불가능해진 권한들을 너무 많이 요청하는 파트가 있어서.. 적당히 고쳤다.

 

앱 매니페스트 개요  |  App architecture  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 앱 매니페스트 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 모든 앱 프로젝트는 프로젝트 소

developer.android.com

 

'공부 > Android' 카테고리의 다른 글

Intent / Activity / Service  (1) 2025.12.28
SHA-256 서명  (0) 2025.12.24
.jar / .aar  (0) 2025.12.12
APK 서명 체계 v3  (1) 2025.12.10
Android Studio 입문  (1) 2025.12.09