androiddeployqtツール
Androidパッケージのビルドには多くのステップが必要です。androiddeployqtツールによって処理されるステップは、Android上でアプリケーションをデプロイするで説明されています。
androiddeployqtを実行する前の前提条件
ツールを手動で実行する前に、CMake
またはqmake
を使ってプロジェクトを構成し、Makefiles
と、androiddeployqt
で使用される重要な設定を含むJSON
ファイル(つまりandroid-<target_name>-deployment-settings.json
)を生成する必要があります。
注意: androiddeployqt JSON ファイルを変更することはお勧めしません。
androiddeployqt 用の環境を準備するために、ソースディレクトリとは別のディレクトリにプロ ジェクトを設定してください。プロジェクトの設定の詳細については、Building Qt for Android Projects from Command Line を参照してください。
コマンドライン引数
ツールを実行する際に必要なコマンドライン引数は--input
と--output
だけです。その他のコマンドライン引数はオプションですが、便利です。以下のリストは、--help
引数を androiddeployqt に渡すことで利用できます。
Syntax: androiddeployqt --output <destination> [options] Creates an Android package in the build directory <destination> and builds it into an .apk file. Optional arguments: --input <inputfile>: Reads <inputfile> for options generated by qmake. A default file name based on the current working directory will be used if nothing else is specified. --deployment <mechanism>: Supported deployment mechanisms: bundled (default): Includes Qt files in stand-alone package. unbundled: Assumes native libraries are present on the device and does not include them in the APK. --aab: Build an Android App Bundle. --no-build: Do not build the package, it is useful to just install a package previously built. --install: Installs apk to device/emulator. By default this step is not taken. If the application has previously been installed on the device, it will be uninstalled first. --reinstall: Installs apk to device/emulator. By default this step is not taken. If the application has previously been installed on the device, it will be overwritten, but its data will be left intact. --device [device ID]: Use specified device for deployment. Default is the device selected by default by adb. --android-platform <platform>: Builds against the given android platform. By default, the highest available version will be used. --release: Builds a package ready for release. By default, the package will be signed with a debug key. --sign <url/to/keystore> <alias>: Signs the package with the specified keystore, alias and store password. Optional arguments for use with signing: --storepass <password>: Keystore password. --storetype <type>: Keystore type. --keypass <password>: Password for private key (if different from keystore password.) --sigfile <file>: Name of .SF/.DSA file. --digestalg <name>: Name of digest algorithm. Default is "SHA-256". --sigalg <name>: Name of signature algorithm. Default is "SHA256withRSA". --tsa <url>: Location of the Time Stamping Authority. --tsacert <alias>: Public key certificate for TSA. --internalsf: Include the .SF file inside the signature block. --sectionsonly: Do not compute hash of entire manifest. --protected: Keystore has protected authentication path. --jarsigner: Deprecated, ignored. NOTE: To conceal the keystore information, the environment variables QT_ANDROID_KEYSTORE_PATH, and QT_ANDROID_KEYSTORE_ALIAS are used to set the values keysotore and alias respectively. Also the environment variables QT_ANDROID_KEYSTORE_STORE_PASS, and QT_ANDROID_KEYSTORE_KEY_PASS are used to set the store and key passwords respectively. This option needs only the --sign parameter. --jdk <path/to/jdk>: Used to find the jarsigner tool when used in combination with the --release argument. By default, an attempt is made to detect the tool using the JAVA_HOME and PATH environment variables, in that order. --qml-import-paths: Specify additional search paths for QML imports. --verbose: Prints out information during processing. --no-generated-assets-cache: Do not pregenerate the entry list for the assets file engine. --aux-mode: Operate in auxiliary mode. This will only copy the dependencies into the build directory and update the XML templates. The project will not be built or installed. --apk <path/where/to/copy/the/apk>: Path where to copy the built apk. --build-aar: Build an AAR package. This option skips --aab, --install, --reinstall, and --sign options if they are provided. --qml-importscanner-binary <path/to/qmlimportscanner>: Override the default qmlimportscanner binary path. By default the qmlimportscanner binary is located using the Qt directory specified in the input file. --depfile <path/to/depfile>: Output a dependency file. --builddir <path/to/build/directory>: build directory. Necessary when generating a depfile because ninja requires relative paths. --no-rcc-bundle-cleanup: skip cleaning rcc bundle directory after running androiddeployqt. This option simplifies debugging of the resource bundle content, but it should not be used when deploying a project, since it litters the "assets" directory. --copy-dependencies-only: resolve application dependencies and stop deploying process after all libraries and resources that the application depends on have been copied. --help: Displays this information.
project_name
、デバイスにデプロイせずにandroiddeployqt
、アプリケーション・パッケージをビルドするには、以下を実行します:
androiddeployqt --input <build_dir>/android-project_name-deployment-settings.json \ --output <build_dir>/android-build
パッケージをビルドしてデバイスにデプロイするには、以下を実行します:
androiddeployqt --input <build_dir>/android-project_name-deployment-settings.json \ --output <build_dir>/android-build --install --device <device_serial_id>
依存関係の検出
Qt には多くのプラグインが付属しており、必要な時に実行時にロードされます。これらは SQL データベースへの接続から特定の画像フォーマットの読み込みまで、あらゆる処理を行うことができます。プラグインは実行時にロードされるため、プラグインの依存関係を検出することは不可能ですが、androiddeployqt はアプリケーションの Qt 依存関係に基づいて依存関係を推測しようとします。プラグインがアプリケーションの依存関係でもない Qt 依存関係を持っている場合、デフォルトではインクルードされません。例えば、SVG イメージフォーマットプラグインを確実にインクルードするには、Qt SVGモジュールをプロジェクトに追加して、アプリケーションの依存関係にする必要があります:
find_package(Qt6 REQUIRED COMPONENTS Svg) ... target_link_libraries(target_name PRIVATE Qt6::Svg)
なぜ特定のプラグインが自動的にインクルードされないのか疑問に思ったら、androiddeployqt を--verbose
オプション付きで実行することで、除外されたプラグインごとに欠落している依存関係のリストを取得することができます。Qt Creator でも、Projects >Build Steps >Build Android APK >Advanced Actions のVerbose output チェックボックスにチェックを入れることで、同じことができます。
アプリケーションの依存関係を手動で指定することも可能です。詳細については、QT_ANDROID_DEPLOYMENT_DEPENDENCIESCMake変数を参照してください。
Note: androiddeployqtはプロジェクトのQMLファイルをスキャンしてQMLインポートを収集します。しかし、実行時にC++からQString 、QMLコードをロードしている場合、androiddeployqtはデプロイ時にそれを認識しないため、正しく動作しない可能性があります。これを解決するには、実行時に参照されるようなQMLモジュールをインポートするダミーのQMLファイルを追加します。
Qt Creatorでのデプロイ
Qt Creator はandroiddeployqt
を使用しており、様々なオプションを指定するための簡単で直感的なユーザーインターフェイスを提供しています。詳細はQt Creator を参照してください:Android デバイスへのアプリケーションのデプロイ」を参照してください。
Qt for Android アプリのカスタマイズとデプロイの詳細については、Android へのアプリケーションのデプロイを参照してください。
©2024 The Qt Company Ltd. 本書に含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。