Qt 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 です。

警告 このフィールドは非推奨であり、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 です。
<サポートするスクリーンアプリがサポートする画面サイズを設定します。デフォルト値はanyDensity,largeScreens,normalScreens,smallScreens です。
<アプリケーションアンドロイド名アプリケーションクラス名。デフォルト値はorg.qtproject.qt.android.bindings.QtApplication
android:labelアプリケーション名のラベル。デフォルト値はQtプロジェクトのターゲット名。
android:hardwareAcceleratedハードウェアアクセラレーションの優先度を設定します。デフォルト値はtrue
android:requestLegacyExternalStorageAndroid のスコープ付きストレージを使うかどうか。デフォルト値は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_SUSPENDED0 に設定することと同じです。 デフォルト値はfalse です。

警告 これをtrue に設定すると、Qt::ApplicationSuspended の状態でQGuiApplication::applicationStateChanged() シグナルが送信された後にアプリケーションが描画しようとした場合に、予期しないクラッシュが発生する可能性があります。

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: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のパーミッションと機能

例えば、QtMultimedia のCamera権限などです。androiddeployqtツールは、ビルド中にAndroidマニフェストにそのような要件を含めるようにします。Qtはマニフェストに以下の行を定義し、実際の値に置き換えます:

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

注意: これらの行がプロジェクトマニフェストから削除された場合、Qt は正しいパーミッションを含めることができません。そのため、いくつかの機能が正しく動作しない可能性があります。

パーミッションのカスタマイズ

Qt 6.8.1 以降、Qt モジュールによって設定されたデフォルトのパーミッションを上書きすることができます。これは、Qtモジュールによって使用されるのと同じパーミッションを、追加または異なる属性で定義する必要がある場合に便利です。

これを実現するには、<!-- %%INSERT_PERMISSIONS --> プレースホルダとともに、Android マニフェスト ファイルでこれらのパーミッションを手動で定義します。手動で定義されたパーミッションは、Qt モジュールによって追加された同じパーミッションよりも優先されるため、重複を避けることができます。

スタイルの抽出

Qt では、Qt WidgetsQt Quick Controls がどのようにスタイリングされるべきかを決定するために、異なる方法を使用します:

  • default または : または を使用する場合 1.full Qt Widgets Qt Quick Controls

    注意: この方法は、Android 9.0 (API 28)からGoogleによって制限され、削除されつつあるAndroidの非SDKインターフェースを使用します。そのため、この方法はAndroid 9.0以上では推奨されません。

  • minimal:Qt Quick Controls 2 を使用し、Qt Widgets またはQt Quick Controls 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.