このページでは

Android向けQtのマニフェストファイルの設定

Androidマニフェストは、あらゆるAndroidアプリに必須のXMLファイルです。このファイルには、アプリが使用するさまざまな設定や機能に関する構成情報に加え、パッケージ名、アプリ名、バージョンなど、アプリ自体の詳細情報が含まれています。また、マニフェストから権限やハードウェア機能の設定を行うこともできます。

Qt for Androidでは、Android上で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 です。

警告: この フィールドは 非推奨となり、build.gradle へ移行されました。今後のリリースで削除される予定です。

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 です。
<supports-screens>アプリがサポートする画面サイズを設定します。デフォルト値は、anyDensity 、largeScreens 、normalScreens 、およびsmallScreens です。
<application>android:nameアプリケーションクラスの名前。デフォルト値は `org.qtproject.qt.android.bindings.QtApplication` です。
android:labelアプリケーション名のラベル。デフォルト値はQtプロジェクトのターゲット名です。これはQT_ANDROID_APP_NAMEを使用して設定できます。
android:iconドローアブルまたはミップマップリソースへの参照として指定されるアプリケーションアイコン。このタグは、QT_ANDROID_APP_ICONを使用して設定するか、AndroidManifest.xml 内で手動で設定しない限り使用されません。
android:hardwareAcceleratedハードウェアアクセラレーションの設定を指定します。デフォルト値は `true` です。
<activity>android:nameアクティビティのクラス名。デフォルト値は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 です。

警告: これを `true `に設定すると 、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:resource="@drawable/splash" 。デフォルト値は設定されていません。

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の権限と機能

Qtの各モジュールによっては、正常に機能するためにAndroidの権限や機能が必要となる場合があります。例えば、QtMultimedia ではカメラの権限が必要です。androiddeployqtツールは、ビルド時にこのような要件をAndroidマニフェストに組み込む処理を行います。Qtはマニフェストに以下の行を定義しますが、これらは実際の値に置き換えられます:

<manifest ...
    <!-- %%INSERT_PERMISSIONS -->
    <!-- %%INSERT_FEATURES -->
    ...
</manifest>

注: これらの行がプロジェクトのマニフェストから削除されると 、Qtは正しい権限を含めることができなくなります。そのため、一部の機能が正常に動作しなくなる可能性があります。

権限のカスタマイズ

Qt 6.8.1 以降、Qt モジュールによって設定されたデフォルトの権限を上書きすることが可能になりました。これは、Qt モジュールで使用されているものと同じ権限を定義する必要があるものの、追加の属性や異なる属性を付与したい場合に役立ちます。

これを実現するには2つの方法があります。1つ目は、アプリケーションのCMakeLists.txt 内でqt_add_android_permissionというCMake関数を使用する方法です。この方法で定義された権限は、Qtモジュールによって定義された同じ権限よりも優先されるため、重複を回避できます。

2つ目の方法は、Androidマニフェストファイルでこれらの権限を手動で定義することです。この方法で定義された権限は、Qtモジュールによって設定された権限や、qt_add_android_permissionで設定された権限よりも優先されます。

スタイルの抽出

Qtでは、Qt Widgets およびQt Quick のコントロールのスタイル設定方法を決定するために、さまざまな手法を使用しています:

  • full:Qt Widgets またはQt Quick コントロールを使用する場合 1.

    注:この方法は 、Android 9.0(API 28)以降、Google によって制限された Android の非 SDK インターフェースを使用しているため、非推奨となっています。他の方法のいずれかを使用してください。

  • default またはminimal :Qt Quick コントロール 2 を使用し、Qt Widgets またはQt Quick コントロール 1 を使用しない場合。これは、デフォルトまたはフルオプションを使用する場合よりも高速です。
  • none: スタイルの抽出を行いません。

6.2リリース以前のQtマニフェスト

Qt 6.2 以前のバージョンでは、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 マニフェストの詳細については、「Android アプリマニフェスト」を参照してください。

© 2026 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.