Qt 안드로이드 매니페스트 파일 구성
안드로이드 매니페스트는 모든 안드로이드 앱에 필요한 XML 파일입니다. 여기에는 앱이 사용하는 다양한 설정 및 기능에 대한 앱 구성과 패키지 이름, 앱 이름, 버전 등과 같은 앱 자체에 대한 세부 정보가 포함되어 있습니다. 권한 및 하드웨어 기능도 매니페스트에서 설정할 수 있습니다.
안드로이드용 Qt는 안드로이드에서 Qt 앱을 빌드하고 실행하는 데 필요한 기능, 권한 및 빌드 시스템에서 사용하는 기타 구성을 포함하는 기본 구성이 포함된 AndroidManifest.xml
버전을 유지합니다.
매니페스트 구성을 위한 Qt 프로젝트
Qt는 매니페스트 파일에서 명시적으로 설정하지 않아도 빌드 시스템에서 androiddeployqt로 전달되어 매니페스트를 올바른 값으로 채우는 몇 가지 메타 데이터를 정의합니다. 이러한 메타 데이터에는 예를 들어 "-- %%INSERT_VALUE%% --"
형식의 값이 할당됩니다:
<manifest ... android:versionCode="-- %%INSERT_VERSION_CODE%% --" ... </manifest>
예를 들어 CMake
에 설정된 버전 코드로 채워집니다.
Qt 기본 구성
Qt는 기본적으로 다음과 같은 매니페스트 구성을 설정합니다:
섹션 | 옵션 | 설명 |
---|---|---|
<manifest> | package | 패키지 이름을 설정합니다. 기본값은 org.qtproject.example.app_name 입니다.경고: 이 필드는 더 이상 사용되지 않으며 |
안드로이드:설치 위치 | 앱의 설치 위치(내부 또는 외부 저장소)를 설정합니다. 기본값은 auto 입니다. | |
안드로이드:버전코드 | 내부 버전 코드를 설정합니다. ANDROID_VERSION_CODE (qmake) 및 QT_ANDROID_VERSION_CODE (CMake)에서 채워집니다. 기본값은 1 입니다. | |
안드로이드:버전 이름 | 공개 버전 이름을 설정합니다. ANDROID_VERSION_NAME (qmake) 및 QT_ANDROID_VERSION_NAME (CMake)에서 채워집니다. 기본값은 1.0 입니다. | |
<supports-screens> | 앱이 지원하는 화면 크기를 설정하며 기본값은 anyDensity , largeScreens , normalScreens , smallScreens 입니다. | |
<애플리케이션> | 안드로이드:이름 | 애플리케이션 클래스 이름입니다. 기본값은 org.qtproject.qt.android.bindings.QtApplication 입니다. |
안드로이드:레이블 | 애플리케이션 이름 레이블. 기본값은 Qt 프로젝트의 대상 이름입니다. | |
android:hardwareAccelerated | 하드웨어 가속 기본 설정을 설정합니다. 기본값은 true 입니다. | |
안드로이드:요청레거시외부스토리지 | 안드로이드 범위 지정 저장소를 사용할지 여부. 기본값은 true 입니다. | |
안드로이드:허용백업 | 애플리케이션이 백업 및 복원 인프라에 참여할 수 있도록 허용할지 여부입니다. false 으로 설정하면 애플리케이션의 백업 또는 복원이 수행되지 않습니다. 기본값은 true 입니다. | |
안드로이드:전체 백업 전용 | 자동 백업을 사용할 수 있는 장치에서 자동 백업을 사용할지 여부입니다. 기본값은 false 입니다. | |
<활동> | 안드로이드:이름 | 활동 클래스 이름입니다. 기본값은 org.qtproject.qt.android.bindings.QtActivity 입니다. |
android:configChanges | 활동이 처리하는 구성 변경 사항을 나열합니다. 기본값은 orientation , uiMode , screenLayout , screenSize , smallestScreenSize , layoutDirection , locale , fontScale , keyboard , keyboardHidden , navigation , mcc , mnc , density 입니다. | |
안드로이드:실행 모드 | 활동을 시작하는 데 사용되는 메서드입니다. 기본값은 singleTop 입니다. | |
안드로이드:화면 방향 | 기기에서 액티비티가 표시되는 방향입니다. 기본값은 unspecified 입니다. | |
<인텐트 필터> | 활동이 응답할 수 있는 인텐트 유형을 지정합니다. 기본값은<action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> | |
android:exported | 다른 애플리케이션의 구성 요소에서 활동을 시작할 수 있는지 여부를 설정합니다. 기본값은 true 입니다. |
Qt 특정 메타 데이터
Qt가 설정하는 기본 매니페스트 구성 외에도 Qt는 Qt 앱에만 유효한 일부 메타 데이터를 정의합니다. 이러한 메타 데이터는 일반적으로 양식의 <activity>
섹션 아래에 있습니다:
<meta-data android:name="meta-data-name" android:value="meta-data-value" />
다음은 Qt에서 정의한 메타 데이터의 목록입니다:
메타 데이터 이름 | 설명 |
---|---|
android.app.lib_name | 액티비티에서 사용하는 네이티브 C++ 라이브러리의 파일 이름입니다. 참고: 이 속성은 필수이며 제거해서는 안 됩니다. 기본값은 Qt 프로젝트의 대상 이름입니다. |
android.app.extract_android_style | 네이티브 안드로이드 스타일 정보를 추출하는 데 사용되는 메서드입니다. 자세한 내용은 스타일 추출을 참조하십시오. 기본값은 minimal 입니다. |
android.app.background_running | 앱이 백그라운드에서 작업을 계속 실행할지 여부를 설정합니다. 이를 true 으로 설정하는 것은 환경 변수 QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED 을 0 으로 설정하는 것과 동일합니다. 기본값은 false 입니다.경고: QGuiApplication::applicationStateChanged () 신호가 Qt::ApplicationSuspended 상태로 전송된 후 애플리케이션이 그리기를 시도하면 이 값을 |
android.app.arguments | 앱에 전달할 인자 목록을 설정합니다 "arg1 arg2" . ANDROID_APPLICATION_ARGUMENTS (qmake) 및 QT_ANDROID_APPLICATION_ARGUMENTS (CMake)에서 채워집니다. 기본값은 설정되지 않습니다. |
android.app.splash_screen_drawable_portrait | 세로 모드에 특정한 스플래시 화면의 드로어블을 설정합니다. 예: android:resource="@drawable/splash_portrait" . 기본값은 설정되어 있지 않습니다. |
android.app.splash_screen_drawable_landscape | 가로 모드에 특화된 스플래시 화면의 드로어블을 설정합니다. 예: android:resource="@drawable/splash_landscape" . 기본값은 설정되어 있지 않습니다. |
android.app.splash_screen_drawable | 앱 시작 시 스플래시 화면의 드로어블을 설정합니다. 참고: 방향별 스플래시 화면이 먼저 확인되며, 설정되지 않은 경우 이 설정이 대신 사용됩니다. 예: |
android.app.splash_screen_sticky | 앱에서 명시적으로 숨길 때까지 스플래시 화면을 계속 표시할지 여부를 설정합니다. 자세한 내용은 QAndroidApplication::hideSplashScreen()를 참조하세요. |
android.app.trace_location | 앱이 추적 파일을 저장할 수 있는 기기 내 위치를 지정합니다. 예시 /저장소/에뮬레이트된/0/Android/data/<앱_패키지_이름>/files/. 이 위치는 공통 추적 형식(CTF) 추적 백엔드를 사용할 때 필요합니다. 참고: 애플리케이션에 해당 위치에 대한 저장소 권한이 필요합니다. 기본값: 설정되지 않음. |
애플리케이션별 메타데이터
일부 메타데이터 속성은 애플리케이션 전체에 해당하며 <application>
섹션 아래에 배치해야 합니다:
메타데이터 이름 | 설명 |
---|---|
android.app.system_libs_prefix | 라이브러리 로딩 조회에 사용할 사용자 정의 시스템 라이브러리 경로를 지정합니다. 앱의 기본 네이티브(JNI) 라이브러리 디렉토리 외부에 설치된 Qt 라이브러리를 사용할 때 필요합니다. 기본값은 /system/lib/ 입니다. |
서비스의 메타 데이터
일부 메타데이터 속성은 서비스에서도 사용할 수 있습니다. 주요 속성은 다음과 같습니다:
Qt 권한 및 기능
다른 Qt 모듈은 제대로 작동하기 위해 일부 안드로이드 권한이나 기능이 필요할 수 있습니다 (예: QtMultimedia 의 카메라 권한). androiddeployqt 도구는 빌드 중에 이러한 요구 사항을 안드로이드 매니페스트에 포함시키는 작업을 처리합니다. Qt는 매니페스트에 다음 줄을 정의하고 실제 값으로 대체합니다:
<manifest ... <!-- %%INSERT_PERMISSIONS --> <!-- %%INSERT_FEATURES --> ... </manifest>
참고: 프로젝트 매니페스트에서 해당 줄이 제거되면 Qt가 올바른 권한을 포함할 수 없습니다. 따라서 일부 기능이 제대로 작동하지 않을 수 있습니다.
권한 사용자 지정하기
Qt 6.8.1부터 Qt 모듈에 설정된 기본 권한을 재정의할 수 있습니다. 이 기능은 Qt 모듈에서 사용하는 것과 동일한 권한을 정의해야 하지만 추가 또는 다른 속성을 정의해야 하는 경우에 유용합니다.
이를 위해 Android 매니페스트 파일에서 <!-- %%INSERT_PERMISSIONS -->
자리 표시자와 함께 이러한 권한을 수동으로 정의할 수 있습니다. 수동으로 정의한 권한은 Qt 모듈에서 추가한 동일한 권한보다 우선하므로 중복을 피할 수 있습니다.
스타일 추출
Qt는 Qt Widgets 와 Qt Quick Controls 의 스타일 지정 방법을 결정하기 위해 서로 다른 방법을 사용합니다:
default
또는full
: Qt Widgets 또는 Qt Quick Controls 사용 시 1.참고: 이 메서드는 Android 9.0(API 28)부터 Google에서 제한 및 제거 중인 일부 Android 비 SDK 인터페이스를 사용합니다. 따라서 Android 9.0 이상에서는 이 방법을 사용하지 않는 것이 좋습니다.
minimal
Qt Quick Controls 2를 사용하고 또는 1을 사용하지 않는 경우. 기본 또는 전체 옵션을 사용하는 것보다 빠릅니다. Qt Widgets Qt Quick Controlsnone
스타일 추출을 하지 않습니다.
6.2 릴리스 이전의 Qt 매니페스트
6.2 이전 버전의 Qt에는 Qt에서 정의한 추가 메타 데이터 세트가 있었습니다. 이러한 속성은 종속성을 관리하는 데 사용되었으며 일부는 중단된 Ministro
서비스에서 사용되었습니다. Qt 6.2에서는 제거되어야 합니다. 다음은 이러한 어트리뷰트 목록입니다:
- android.app.qt_sources_resource_id
- android.app.repository
- android.app.bundled_libs_resource_id
- android.app.bundle_local_qt_libs
- android.app.use_local_qt_libs
- android.app.libs_prefix
- android.app.load_local_libs_resource_id
- android.app.load_local_jars
- android.app.static_init_classes
- android.app.qt_libs_resource_id
- android.app.ministro_not_found_msg
- android.app.ministro_needed_msg
- android.app.fatal_error_msg
안드로이드 매니페스트에 대한 자세한 내용은 안드로이드 앱 매니페스트를 참조하세요.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.