# Android 앱 매니페스트

> Introduces Unity Library Manifests and explains how Unity uses them to generate the final Android App Manifest for an application.

Android 앱 매니페스트에는 Android 애플리케이션에 대한 정보가 포함되어 있습니다. 각 애플리케이션에는 `AndroidManifest.xml`이라는 [소스 세트](https://developer.android.com/studio/build#sourcesets)의 루트에 Android 앱 매니페스트 [XML](https://en.wikipedia.org/wiki/XML) 파일이 하나 있습니다. Android 운영 체제 및 디지털 배포 서비스(예: Google Play)는 Android 앱 매니페스트를 사용하여 애플리케이션의 이름, 애플리케이션의 [엔트리 포인트](https://developer.android.com/guide/components/activities/intro-activities), Android 버전 지원, 하드웨어 기능 지원, 애플리케이션 권한과 같은 정보를 찾습니다. Android 앱 매니페스트 파일에 대한 자세한 내용과 구성하는 설정 목록은 [Android 앱 매니페스트](https://developer.android.com/guide/topics/manifest/manifest-intro.html)에 대한 Android 개발자 기술 자료를 참조하십시오.

애플리케이션을 나타내는 Android 앱 매니페스트를 생성하기 위해 Gradle은 소스가 다양한 매니페스트 파일을 병합합니다. 이 경우는 다음과 같습니다.

* **Unity 라이브러리 매니페스트**: Unity가 생성하는 매니페스트 파일로, Unity 플레이어 활동을 설정합니다. 자세한 내용은 [Unity 라이브러리 매니페스트](/engine/6000.0/manual/platform-specific/android/introducing/library-manifest.md)를 참조하십시오.
* **Unity 런처 매니페스트**: Unity가 생성하는 매니페스트 파일로, Unity 라이브러리를 래핑하는 애플리케이션을 설정합니다. 자세한 내용은 [Unity 런처 매니페스트](/engine/6000.0/manual/platform-specific/android/introducing/launcher-manifest.md)를 참조하십시오.
* **플러그인 매니페스트**: AAR(Android 아카이브) 또는 Android 라이브러리 프로젝트와 같은 플러그인을 나타내는 매니페스트 파일입니다.

Unity에서 이러한 매니페스트 파일을 사용하여 Android 앱 매니페스트를 생성하는 방법에 대한 내용은 [Android 앱 매니페스트 생성](#generating-an-android-manifest)을 참조하십시오.

## Android 앱 매니페스트 생성##generating-an-android-app-manifest

[Android 애플리케이션 빌드 프로세스](/engine/6000.0/manual/platform-specific/android/introducing/how-unity-builds-android-applications.md)에서는 애플리케이션용 Android 앱 매니페스트 파일이 생성됩니다. 이 작업을 수행하는 방법은 다음과 같습니다.

1. Unity는 Unity 라이브러리 매니페스트를 Android 앱 매니페스트의 템플릿으로 사용합니다. [Unity 라이브러리 매니페스트를 오버라이드](/engine/6000.0/manual/platform-specific/android/building-and-delivering/modify-gradle-project-files/templates.md)하는 경우 Unity는 지정한 파일을 템플릿으로 사용합니다.
2. Unity는 애플리케이션이 사용하는 [권한](#permissions), 설정 옵션, 기능과 같은 정보로 Unity 라이브러리 매니페스트 파일과 Unity 런처 매니페스트 파일을 업데이트합니다.
3. [Gradle](/engine/6000.0/manual/platform-specific/android/introducing/gradle-overview.md)은 Unity 라이브러리 매니페스트, Unity 런처 매니페스트, 플러그인 매니페스트를 Android 앱 매니페스트 파일 하나로 병합합니다.

[Android Studio APK 분석기](https://developer.android.com/studio/build/apk-analyzer.html)나 [Apktool](https://ibotpeaches.github.io/Apktool/) 같은 다른 타사 툴을 사용하여 출력 AAB(Android 앱 번들)이나 APK(Android 패키지) 안에 있는 Android 앱 매니페스트 파일을 볼 수 있습니다.

**중요**: APK 또는 AAB의 Android 앱 매니페스트 파일은 편집할 수 없습니다. Android 앱 매니페스트의 콘텐츠를 오버라이드하는 방법에 대한 자세한 내용은 [Gradle 프로젝트 파일 수정](/engine/6000.0/manual/platform-specific/android/building-and-delivering/modify-gradle-project-files.md)을 참조하십시오.

## 권한##permissions

Unity는 [Android Player 설정](/engine/6000.0/manual/platform-specific/android/getting-started/class-player-settings.md)과 C# 스크립트에서 애플리케이션이 호출한 Unity API에 따라 매니페스트에 필수 권한을 자동으로 추가합니다. 예시:

* 다음 클래스, 패키지, Player 설정은 `INTERNET` 권한을 추가합니다.

  * 개발 빌드를 위해 [Android Player 설정](/engine/6000.0/manual/platform-specific/android/getting-started/class-player-settings.md#Configuration)에서 **Internet Access**를 **Require**로 설정
  * [UnityWebRequest](/engine/6000.0/script-reference/unity-engine-networking/unity-web-request.md) 및 [Ping](/engine/6000.0/script-reference/unity-engine/ping.md) 클래스
  * [System.Net.Sockets](https://learn.microsoft.com/en-us/dotnet/api/system.net.sockets.socket?view=net-8.0) API
  * [Cloud Diagnostics 패키지](https://docs.unity.com/ugs/manual/cloud-diagnostics/manual/CloudDiagnostics/WelcometoCloudDiagnostics.md)의 [Unity Analytics](https://docs.unity.com/ugs/manual/analytics/manual/overview.md) 패키지와 **Crash and Exception Reporting**

* 진동(예: [Handheld.Vibrate](/engine/6000.0/script-reference/unity-engine/handheld/vibrate.md))을 사용하면 `VIBRATE`가 추가됩니다.

* [InternetReachability](/engine/6000.0/script-reference/unity-engine/application/internet-reachability.md) 프로퍼티는 `ACCESS_NETWORK_STATE`를 추가합니다.

* 위치 관련 API(예: [LocationService](/engine/6000.0/script-reference/unity-engine/location-service.md))는 `ACCESS_FINE_LOCATION`을 추가합니다.

* [WebCamTexture](/engine/6000.0/script-reference/unity-engine/web-cam-texture.md) API는 `CAMERA`를 추가합니다.

* [Microphone](/engine/6000.0/script-reference/unity-engine/microphone.md) 클래스는 `RECORD_AUDIO`를 추가합니다.

플러그인에 해당 매니페스트에 선언된 권한이 필요한 경우 Unity는 Gradle 병합 단계에서 최종 Android 앱 매니페스트에 권한을 자동으로 추가합니다. Unity는 플러그인이 사용하는 모든 Unity API를 권한 목록에 포함합니다.

Android 앱 매니페스트에서 권한을 지정하는 대신 Android [런타임 권한 시스템](https://developer.android.com/training/permissions/requesting.html)을 사용하여 [런타임 시 권한을 요청](/engine/6000.0/manual/platform-specific/android/developing/device-features-and-permissions/requesting-permissions.md)할 수 있습니다.

권한에 대한 자세한 내용은 [Android 앱 매니페스트 권한](https://developer.android.com/guide/topics/manifest/manifest-intro.html#perms)에 대한 Android 개발자 기술 자료를 참조하십시오.
