Version: 2019.4
Android용 Gradle
권한 요청

Android 매니페스트

Android 매니페스트는 Android 앱에 대한 중요한 메타 데이터가 포함된 XML 파일입니다. 여기에는 패키지 이름, 액티비티 이름, 메인 작업(앱 엔트리 포인트), Android 버전 지원, 하드웨어 기능 지원, 권한 및 기타 설정이 포함되어 있습니다.

Android 매니페스트 파일에 대한 자세한 내용은 Android 매니페스트의 Android 개발자 문서를 참조하십시오.

Unity가 Android 매니페스트를 생성하는 법

Unity 2019.3 버전 이상에서는 Unity가 생성하는 Android Gradle 프로젝트에 두 개의 템플릿 매니페스트 파일이 포함됩니다.

  1. LauncherManifest.xml - 익스포트한 프로젝트(root/launcher/src/main/AndroidManifest.xml)에 있습니다. 이 파일에는 앱에 대한 다음의 요소가 들어 있습니다.
    • 아이콘
    • 이름
    • 시작 활동과 해당 목적
    • 설치 위치
    • 지원되는 화면 크기
    • isGame 설정
  2. LibraryManifest.xml - 익스포트한 프로젝트(root/unityLibrary/src/main/AndroidManifest.xml)에 있습니다. 이 매니페스트를 Plugins/Android 폴더에 추가한 커스텀 AndroidManifest.xml 로 오버라이드할 수 있습니다. 이 파일은 다음을 선언합니다.
    • Unity 동작
    • 권한
    • Unity 동작에서 사용하는 테마
    • VR 모드
    • VR 성능
    • 동작의 크기를 바꿀 수 없도록 설정(VR용)
    • 최대 종횡비 설정
    • 설정 변경 사항에 대한 응답
    • 방향
    • 실행 모드
    • Android UI 하드웨어 가속화
    • 사용되는 기능(게임패드 또는 그래픽스 API)
    • 노치 지원

Unity는 앱을 빌드할 때 다음 단계에 따라 Android 매니페스트 파일을 자동으로 생성합니다.

  1. Unity는 LibraryManifest.xml 또는 AndroidManifest.xml 을 기본 매니페스트로 사용합니다.
  2. 그런 다음 플러그인(.aar 파일 및 Android 라이브러리)의 모든 Android 매니페스트를 찾습니다.
  3. Google의 manifmerger 클래스를 사용하여 플러그인 매니페스트를 기본 매니페스트에 추가합니다.
  4. Unity는 런처 및 라이브러리 모듈의 매니페스트 파일을 수정합니다. 또한 권한, 설정 옵션, 사용되는 기능, 기타 정보를 자동으로 추가합니다.

Android 매니페스트 오버라이드

Unity가 앱에 대한 올바른 매니페스트를 생성하지만 해당 콘텐츠를 직접 제어할 수도 있습니다.

Unity 외부에서 생성한 Android 매니페스트를 사용하려면 Android 매니페스트 파일을 Assets/Plugins/Android/AndroidManifest.xml 위치로 임포트합니다. 이렇게 하면 기본 LibraryManifest.xml 을 오버라이드합니다.

이 경우 Unity는 Android 라이브러리의 매니페스트를 기본 매니페스트에 병합하고 그로 인한 매니페스트의 설정이 올바른지 확인합니다. 매니페스트를 완전히 제어(예: 권한 설정 등)하려면 프로젝트를 익스포트한 후 Android Studio에서 최종 매니페스트를 수정해야 합니다.

참고: Unity는 [launchMode - singleTask](https://developer.android.com/guide/topics/manifest/activity-element.html#lmode) 실행 모드만 지원합니다.

권한

Unity는 Android 플레이어 설정, 그리고 앱이 스크립트에서 호출하는 Unity API를 기반으로 매니페스트에 필요한 권한을 자동으로 추가합니다. 예제:

권한에 대한 자세한 내용은 Android 매니페스트 권한에 대한 Android 개발자 문서를 참조하십시오.

플러그인이 매니페스트에서 선언을 통해 권한을 요청하는 경우 Unity는 병합 단계에서 해당 권한을 자동으로 Android 매니페스트에 추가합니다. 플러그인이 호출하는 모든 Unity API는 권한 리스트에 포함됩니다.

Android 6.0(Marshmallow)의 런타임 권한

앱이 Android 6.0(Marshmallow) 이상의 디바이스에서 실행 중이며 Android API 레벨 23 이상을 타겟팅하는 경우 앱은 Android 런타임 권한 시스템을 사용합니다.

Android 런타임 권한 시스템은 앱이 처음으로 설치할 때가 아니라 앱이 실행되는 동안 사용자에게 권한을 부여하도록 요청합니다. 앱 사용자는 일반적으로 앱이 실행되는 동안 앱이 필요할 때마다(예: 사진 촬영 전 카메라 사용 권한 요청) 각 권한을 부여하거나 거부할 수 있습니다. 이렇게 하면 권한이 없을 경우 앱은 제한된 기능만 실행합니다. Unity의 Android.Permission 클래스를 사용하여 사용자가 특정 권한을 부여 또는 거부했는지 확인할 수 있습니다. 앱에 필요한 권한이 거부될 경우 해당 사용자에게 앱에 해당 권한이 필요한 이유를 설명하고 권한을 승인하도록 요청할 수 있습니다. 자세한 내용은 권한 요청 문서를 참조하십시오.

앱은 시작 시 Android에서 “위험한” 권한으로 간주되는 권한을 허용하도록 요청합니다. 자세한 내용은 Android의 위험한 권한에 대한 Android 개발자 문서를 참조하십시오. Unity Android 앱이 시작 시 권한을 요청하지 않도록 하려면 Application 또는 Activity 섹션의 매니페스트에 다음 코드를 추가하십시오.

<meta-data android:name="unityplayer.SkipPermissionsDialog" android:value="true" />

참고: 이 코드를 추가하면 앱 시작 시 권한 다이얼로그가 표시되지 않습니다. 하지만 크래시를 피하도록 런타임 권한을 신중하게 처리해야 합니다. 이는 런타임 권한을 처리하기 위한 고급 방식입니다.

런타임 권한 시스템 또는 권한 처리에 대한 자세한 내용은 Android 개발자 문서의 권한 요청에 대한 Android 개발자 문서를 참조하십시오.

Android 매니페스트 결과 검사

Unity가 앱을 위해 생성하는 최종 Android 매니페스트를 검사하려면 프로젝트를 빌드한 후 그리고 Unity 에디터를 종료하기 전에 Temp/StagingArea/AndroidManifest.xml 파일을 여십시오.

매니페스트는 출력 패키지(.apk)에 바이너리 포맷으로 저장됩니다. .apk 내부 매니페스트의 내용을 확인하려면 Android Studio APK Analyzer 또는 Apktool과 같은 다른 타사 툴을 사용하십시오.


  • 2019.3에서 Android용 ‘Unity as a Library’ 기능 추가됨NewIn20193

  • 2018.3에서 Android 런타임 권한 지원 추가

  • 5.5에서 업데이트 된 기능

Android용 Gradle
권한 요청