Qt WebEngine アプリケーションのデプロイ

アプリケーションをパッケージ化してデプロイする方法はオペレーティングシステムによって異なります。Windows と macOS では、windeployqtmacdeployqtがスタンドアロンのアプリケーションパッケージを生成する手順を自動化します。

Qt WebEngine に依存するアプリケーションを手動でデプロイする場合、アプリケーションの実行に必要なすべてのファイル(ライブラリ、QML インポート、プラグイン、翻訳)を含める必要があります。

詳細はQt アプリケーションのデプロイを参照してください。

ターゲットプラットフォーム

Qt WebEngine は Qt のすべてのSupported Platforms をサポートしようと努めています。しかし、Chromium の要件が異なるため、必ずしも対応できるとは限りません。既知の制限は以下の通りです:

  • Qt WebEngine は現在、Windows、Linux、macOS のみをサポートしています。
  • Windows では、Qt WebEngine はターゲットプラットフォームとして Windows Vista 以降をサポートしています。Chromium では新しい API を使用しているため、Windows XP はサポートされていません。WinRT もサポートされていません。
  • Windows 上で Qt WebEngine アプリケーションを実行するには、Visual C++ Redistributable version 14.28 以上が必要です。

アプリケーションの手動デプロイ

Qt WebEngine に依存するアプリケーションを手動でデプロイする場合、以下のファイルをデプロイする必要があります:

  • ライブラリ
  • QML インポート
  • Qt WebEngine プロセス
  • リソース
  • 翻訳
  • オーディオおよびビデオコーデック

ライブラリのデプロイ

Qt WebEngine に依存するアプリケーションには、以下のライブラリをデプロイする必要があります:

QML インポートのデプロイ

アプリケーションで Qt Quick 統合が使用されている場合、QtWebEngine インポートディレクトリをデプロイする必要があります。

Qt WebEngine プロセスのデプロイ

Qt WebEngine は、Chromium プロジェクトが提供するマルチプロセスモデルを利用します。マルチプロセスモデルでは、Qt WebEngine Process の実行ファイルをアプリケーションと一緒にデプロイする必要があります。

WebEngine プロセスは、QWebEngineView またはWebEngineView インスタンスごとに実行されます。例えば、2 つのタブを開いているブラウザーアプリケーションでは、プロセスの 2 つのインスタンスが別々に実行されます。これは、安定したブラウジング体験を提供するために、最近のほとんどの Web エンジンで使用されている一般的なアプローチです。

実行時に Qt WebEngine は、QLibraryInfo::location(QLibraryInfo::LibraryExecutablesPath) が返すディレクトリからQtWebEngineProcess の実行ファイルを探します。Qt インストールの場合、これはQTDIR/libexec (Linux) またはQTDIR\bin (Windows) です。このパスは、例えばqt.conf ファイルを定義することで変更できます。あるいは、実行可能パスをQTWEBENGINEPROCESS_PATH 環境変数の値として設定することもできます。macOS では、Qt WebEngine は実行ファイルを.app/Helpers/QtWebEngineProcess から探します。

リソースのデプロイ

Qt WebEngine には以下のリソースファイルが必要です:

  • qtwebengine_resources.pak Chromium が必要とするリソースが含まれています。
  • qtwebengine_devtools_resources.pak リモートデバッグ用のツールが含まれています。
  • qtwebengine_resources_100p.pak 低解像度ディスプレイに適したイメージが含まれています。
  • qtwebengine_resources_200p.pak 高 DPI ディスプレイに適したイメージが含まれています。
  • icudtl.dat International Components for Unicode(ICU)のサポートを提供します。これは ICU の Chromium バージョンで、Qt WebEngine がシステム ICU を使用するように設定されている場合は必要ありません。
  • v8_context_snapshot.bin には、初期化を高速化するために使用される v8 コンテキストのスナップショットが含まれています。デバッグビルドでは、 の代わりに というファイル名の拡張子を持つ別のスナップショットを使用します。macOS では、 や のように、各アーキテクチャに対応した名前のスナップショットがあります。.bin .debug.bin v8_context_snapshot.arm64.bin v8_context_snapshot.arm64.debug.bin

リソースは以下の場所から検索されます:

  • Linux および Windows の場合: QLibraryInfo::location(QLibraryInfo::DataPath) で指定されたディレクトリ内のresources ディレクトリ。
  • macOS の場合:.app/Content/Resources
  • QCoreApplication::applicationDirPath() で指定されたアプリケーション・ディレクトリ

あるいは、リソース・ディレクトリのパスを環境変数QTWEBENGINE_RESOURCES_PATH の値として設定することもできます。

翻訳

ロケールデータ(en-US.pak など)は、以下の場所から検索されます:

  • macOSの場合:.app/Content/Resources
  • Linux および Windows の場合: QLibraryInfo::location(QLibraryInfo::TranslationsPath) で指定されたディレクトリ内のqtwebengine_locales ディレクトリ。

あるいは、ロケール・ディレクトリのパスを環境変数QTWEBENGINE_LOCALES_PATH の値として設定することもできます。

Qt リソースファイル内の JavaScript ファイル

WebEngine アプリケーションが Qt Quick Compiler を使ってビルドされ、.qrc リソースに JavaScript ファイルが含まれていて、これらのファイルが HTML ページ内から読み込まれるようになっている場合、プロジェクト内のQTQUICK_COMPILER_SKIPPED_RESOURCES qmake 変数でリソースファイルを指定するようにしてください。これにより、Qt Quick Compiler が対応する JavaScript コードに対して C++ コードを生成しようとしたり、Qt リソースファイルから元の JavaScript コードを削除して HTML ページが壊れてしまうのを防ぐことができます。例えば

QTQUICK_COMPILER_SKIPPED_RESOURCES += resources/my_resource.qrc

macOS 特有のデプロイ手順

Qt WebEngine アプリケーションを macOS にデプロイするには、Qt WebEngine プロセスが、少なくともQtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/Resources/QtWebEngineProcess.entitlements にリストされているエンタイトルメントを含むエンタイトルメントファイルで署名されていることを確認する必要があります。

macOS でマイクやカメラにアクセスする Qt WebEngine アプリケーションをデプロイするには、アプリケーションがカメラやマイクへのアクセス許可を求める理由を説明するために、ユーザーに表示するメッセージにテキストを用意する必要があります。これを行うには、以下に説明するキーを使用して、アプリケーションのInfo.plist ファイルにテキストを追加します。

カメラ使用メッセージには、以下のキーを使用してテキストを指定します:

<key>NSCameraUsageDescription</key>
<string>Your message text for camera usage.</string>

Appleのプロパティリストファイルのドキュメントも参照してください。

マイク使用メッセージには、以下のキーを使ってテキストを記述します:

<key>NSMicrophoneUsageDescription</key>
<string>Your message text for microphone usage.</string>

Appleのプロパティリストファイルのドキュメントも参照してください。

カメラまたはマイクにアクセスするアプリケーションを公証するには、デプロイと公証に使用するアプリケーションのエンタイトルメントファイルに対応するキーを追加する必要があります。

カメラへのアクセスを有効にするには、次のように追加します:

<key>com.apple.security.device.camera</key>
<true/>

Appleのカメラエンタイトルメントドキュメントも参照してください。

マイクへのアクセスを有効にするには、以下を追加します:

<key>com.apple.security.device.microphone</key>
<true/>

Apple's microphone entitlement documentationも参照してください。

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