Qt for Android マニフェストファイルの設定
Android Manifest は、Android アプリに必要な XML ファイルです。パッケージ名、アプリ名、バージョンなど、アプリ自体の詳細だけでなく、アプリが使用するさまざまな設定や機能のアプリ構成が含まれています。パーミッションやハードウェア機能もマニフェストから設定できます。
Qt for Android は、Android 上で Qt アプリをビルドして実行するために必要な機能、パーミッション、およびビルドシステムで使用されるその他の設定を含む、デフォルト設定のAndroidManifest.xml
のバージョンを維持します。
Qt プロジェクトからマニフェストへの設定
Qt では、ビルド システムからandroiddeployqtに渡されるいくつかのメタデータを定義しており、マニフェスト ファイルで明示的に設定しなくても、正しい値をマニフェストに入力することができます。このようなメタデータには、例えば"-- %%INSERT_VALUE%% --"
という形式で値が割り当てられます:
<manifest ... android:versionCode="-- %%INSERT_VERSION_CODE%% --" ... </manifest>
これは、例えばCMake
で設定されているバージョンコードで入力されます。
Qtデフォルト設定
Qt はデフォルトで以下のマニフェスト設定を行います:
セクション | オプション | 説明 |
---|---|---|
<マニフェスト | パッケージ | パッケージ名を設定します。既定値はorg.qtproject.example.app_name です。警告 このフィールドは非推奨であり、 |
android:installLocation | アプリのインストール場所(内部ストレージか外部ストレージか)を設定します。デフォルト値はauto です。 | |
android:versionCode | 内部バージョンコードを設定します。ANDROID_VERSION_CODE (qmake) およびQT_ANDROID_VERSION_CODE (CMake) から取得します。デフォルト値は1 です。 | |
android:versionName | 公開バージョン名を設定します。ANDROID_VERSION_NAME (qmake) およびQT_ANDROID_VERSION_NAME (CMake)から設定します。デフォルト値は1.0 です。 | |
<サポートするスクリーン | アプリがサポートする画面サイズを設定します。デフォルト値はanyDensity ,largeScreens ,normalScreens ,smallScreens です。 | |
<アプリケーション | アンドロイド名 | アプリケーションクラス名。デフォルト値はorg.qtproject.qt.android.bindings.QtApplication 。 |
android:label | アプリケーション名のラベル。デフォルト値はQtプロジェクトのターゲット名。QT_ANDROID_APP_NAMEを使って設定できます。 | |
android:icon | drawableまたはmipmapリソースへの参照としてのアプリケーションアイコン。このタグは、QT_ANDROID_APP_ICONを使うか、AndroidManifest.xml で手動で設定しない限り、使われません。 | |
android:hardwareAccelerated | ハードウェアアクセラレーションの優先順位を設定します。デフォルト値はtrue です。 | |
android:requestLegacyExternalStorage | Androidのスコープ付きストレージを使用するかどうか。デフォルト値はtrue 。 | |
android:allowBackup | アプリケーションがバックアップとリストアのインフラストラクチャに参加することを許可するかどうか。これをfalse に設定すると、アプリケーションのバックアップやリストアは実行されません。デフォルト値はtrue です。 | |
android:fullBackupOnly | 自動バックアップが利用可能なデバイスで、自動バックアップを使用するかどうか。デフォルト値はfalse です。 | |
<アクティビティ | アンドロイド名 | アクティビティクラス名。デフォルト値はorg.qtproject.qt.android.bindings.QtActivity 。 |
android:configChanges | アクティビティが扱う設定変更のリスト。デフォルト値はorientation ,uiMode ,screenLayout ,screenSize ,smallestScreenSize ,layoutDirection ,locale ,fontScale ,keyboard ,keyboardHidden ,navigation ,mcc ,mnc ,density 。 | |
android:launchMode | アクティビティの起動に使用するメソッド。デフォルト値はsingleTop です。 | |
android:screenOrientation | デバイス上のアクティビティ表示の向き。デフォルト値はunspecified 。 | |
<intent-filter | アクティビティが応答できるインテントの種類を指定します。デフォルト値は<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 | ネイティブのAndroidスタイル情報を抽出するためのメソッドです。詳細については、スタイル抽出を参照してください。デフォルト値はminimal 。 |
android.app.background_running | アプリがバックグラウンドでタスクを実行し続けるかどうかを設定します。これをtrue に設定することは、環境変数QT_BLOCK_EVENT_LOOPS_WHEN_SUSPENDED を0 に設定することと同じです。 デフォルト値はfalse です。警告 これを |
android.app.arguments | アプリに渡す引数のリストを設定する"arg1 arg2" 。ANDROID_APPLICATION_ARGUMENTS (qmake)とQT_ANDROID_APPLICATION_ARGUMENTS (CMake)から入力されます。デフォルト値は設定されない。 |
android.app.splash_screen_drawable_portrait | ポートレートモードに特化したスプラッシュスクリーンのdrawableを設定します。例:android:resource="@drawable/splash_portrait" 。デフォルト値は設定されていません。 |
android.app.splash_screen_drawable_landscape | ランドスケープモードに特化したスプラッシュスクリーンの描画可能領域を設定します。例:android:resource="@drawable/splash_landscape" 。デフォルト値は設定されていません。 |
android.app.splash_screen_drawable | アプリ開始時のスプラッシュスクリーン用のdrawableを設定します。 注意: オリエンテーション固有のスプラッシュスクリーンが最初にチェックされ、設定されていない場合は、これが代わりに使用されます。例: |
android.app.splash_screen_sticky | アプリが明示的に非表示にするまで、スプラッシュスクリーンを表示したままにするかどうかを設定します。詳細はQAndroidApplication::hideSplashScreen() を参照。 |
android.app.trace_location | アプリケーションがトレースファイルを保存するデバイス上の場所を指定します。例えば例えば、/storage/emulated/0/Android/data/<app_package_name>/files/です。これは、Common Trace Format (CTF) トレースバックエンドを使用する場合に必要です。 注意: アプリケーションは、この場所に対するストレージパーミッションが必要です。デフォルト:設定されていません。 |
アプリケーション固有のメタデータ
いくつかのメタデータ属性はアプリケーション固有であり、<application>
セクションの下に置くべきである:
メタデータ名 | 説明 |
---|---|
android.app.system_libs_prefix | ライブラリ読み込みのルックアップに使用するカスタムシステムライブラリパスを指定します。これは、アプリのデフォルトのネイティブ(JNI)ライブラリディレクトリの外にインストールされたQtライブラリを使用する場合に必要です。デフォルト値は/system/lib/ です。 |
サービスのメタデータ
いくつかのメタデータ属性は、サービスでも使用できます。主なものは以下の通りです:
Qtの権限と機能
例えば、QtMultimedia のCamera権限などです。androiddeployqtツールは、ビルド中にAndroidマニフェストにそのような要件を含めるようにします。Qtはマニフェストに以下の行を定義し、実際の値に置き換えます:
<manifest ... <!-- %%INSERT_PERMISSIONS --> <!-- %%INSERT_FEATURES --> ... </manifest>
注意: これらの行がプロジェクトマニフェストから削除された場合、Qt は正しいパーミッションを含めることができません。そのため、一部の機能が正しく動作しない可能性があります。
パーミッションのカスタマイズ
Qt 6.8.1 以降、Qt モジュールによって設定されたデフォルトのパーミッションを上書きすることができます。これは、Qtモジュールによって使用されるのと同じパーミッションを、追加または異なる属性で定義する必要がある場合に便利です。
これを実現するには2つの方法があります。最初の方法は、アプリケーションのCMakeLists.txt
でqt_add_android_permissionCMake 関数を使う方法です。この方法で定義されたパーミッションは、Qtモジュールで定義されたパーミッションよりも優先され、重複を避けることができます。
2つ目の方法は、Androidマニフェストファイルでこれらのパーミッションを手動で定義することです。この方法で定義されたパーミッションは、Qtモジュールで設定されたパーミッションや、qt_add_android_permissionで設定されたパーミッションよりも優先されます。
スタイル抽出
Qt では、Qt Widgets とQt Quick Controls がどのようにスタイリングされるべきかを決定するために、異なる方法を使用します:
full
Qt Widgets または コントロールを使用する場合 1.Qt Quick注意: この方法は、Android 9.0 (API 28) から Google によって制限された Android の非 SDK インターフェースを使用しているため、廃止されました。他の方法を使用してください。
default
またはminimal
:Qt Quick コントロール 2 を使用し、Qt Widgets またはQt Quick コントロール 1 を使用しない場合。これは、デフォルトまたは完全なオプションを使用するよりも高速です。none
スタイル抽出は行いません。
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
Android Manifestの詳細については、Android App Manifestを参照してください。
© 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.