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 では、Qt ウィジェットや Qt クイックコントロールのスタイルを決定するために、さまざまな方法を使用します:

  • default または : Qt ウィジェットや Qt クイックコントロールを使用する場合 1.full

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

  • minimalQt 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を参照してください。

©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。