コマンドラインから Qt for Android プロジェクトをビルドする

CMake によるビルド

インストールされた Qt を使って CMake プロジェクトをビルドするには、例えば Linux ではqt-cmakewrapper を使って次のようにします:

~/Qt/<qt_version>/android_<abi>/bin/qt-cmake \
    -DANDROID_SDK_ROOT=~/Android/Sdk \
    -DANDROID_NDK_ROOT=~/Android/Sdk/ndk/26.1.10909125 \
    -S <source_dir> -B <build_dir> \
    -GNinja

このページでは、わかりやすいようにLinuxのAndroid SDKのパスを使用していますが、これらのコマンドを実行する際は、お使いのシステムの関連パスを使用してください。

Android SDKは、一般的にQt Creator 、またはAndroid Studioによって以下の場所にインストールされます:

  • Linux: ~/Android/Sdk/
  • macOS: ~/Library/Android/sdk/
  • WindowsWindows: C:¥Users<USER>¥AppData¥Local¥Android¥Sdk

注意: セルフビルドのQtを使用している場合、SDKとNDKの引数を指定する必要はありません。

CMakeを使ったマルチABIパッケージのビルド

Qt 6.8では、マルチABIパッケージをビルドする方法がいくつか存在します。デフォルトでは、qt-cmakeスクリプトに属する単一のABIのみが選択されます。QT_ANDROID_BUILD_ALL_ABIS変数をTRUE に設定すると、利用可能な Qt for Android SDK の自動検出が可能になります。この検出メカニズムは、Qt Online Installer によって提供されるデフォルトのディレクトリ構造を使用することを前提としています:

~/Qt/<qt_version>:
    android_arm64_v8a
    android_armv7
    android_x86
    android_x86_64

以下のコマンドは、Qt Online Installer が提供する Qt for Android SDK を使用して Android マルチ ABI パッケージをビルドする最も簡単な方法を示しています:

~/Qt/<qt_version>/android_<abi>/bin/qt-cmake \
    -DQT_ANDROID_BUILD_ALL_ABIS=TRUE \
    -DANDROID_SDK_ROOT=~/Android/Sdk \
    -DANDROID_NDK_ROOT=~/Android/Sdk/ndk/26.1.10909125 \
    -S <source_directory> -B <build_directory>
    -GNinja

QT_ANDROID_ABIS変数を使用すると、プロジェクトがビルドされる ABI のリストをカスタマイズできます。対応する Qt for Android 開発キットは、前述のディレクトリ構造に従う必要があります。以下のコマンドラインは、arm64-v8ax86 ABIs のためだけにプロジェクトを設定します:

~/Qt/<qt_version>/android_<abi>/bin/qt-cmake \
    -DQT_ANDROID_ABIS="arm64-v8a;x86" \
    -DANDROID_SDK_ROOT=~/Android/Sdk \
    -DANDROID_NDK_ROOT=~/Android/Sdk/ndk/26.1.10909125 \
    -S <source_directory> -B <build_directory>
    -GNinja

注意: qt-cmakeスクリプトが属するプライマリ SDK の ABI は、無条件で使用する ABI のリストに追加されます。ビルドから除外することはできません。

注意: QT_ANDROID_BUILD_ALL_ABIS の方がQT_ANDROID_ABIS よりも優先度が高いです。

デフォルトのディレクトリ構造と一致しない Qt for Android SDK へのパスは、対応するQT_PATH_ANDROID_ABI_<ABI>変数を使用して変更できます。

以下の例では、利用可能な Qt for Android SDK の自動検出を有効にし、armeabi-v7a およびarm64-v8a SDK へのカスタムパスを指定しています:

<qt_for_android_install_path>/bin/qt-cmake \
    -DQT_ANDROID_BUILD_ALL_ABIS=TRUE
    -DQT_PATH_ANDROID_ABI_armeabi-v7a="<Qt/for/armeabi-v7a>" \
    -DQT_PATH_ANDROID_ABI_arm64-v8a="<Qt/for/arm64-v8a>" \
    -DANDROID_SDK_ROOT=~/Android/Sdk \
    -DANDROID_NDK_ROOT=~/Android/Sdk/ndk/26.1.10909125 \
    -S <source_directory> -B <build_directory>
    -GNinja

また、QT_ANDROID_ABIStargetプロパティを設定し、単一の実行可能ターゲットがビルドされるABIのリストを指定することも可能です。例えば

qt_add_executable(MyApp main.cpp)
set_target_properties(MyApp PROPERTIES QT_ANDROID_ABIS "arm64-v8a;x86")

例えば、MyApp ターゲットは、QT_ANDROID_BUILD_ALL_ABIS またはQT_ANDROID_ABIS 変数が設定されていても、armeabi-v7aarm64-v8a に対してのみビルドされます。

Androidバンドルの作成

プロジェクトが設定されたら、以下のCMakeターゲットを使用してアプリケーション・バンドルを作成できます:

cmake --build . --target apk

または、AABを生成します:

cmake --build . --target aab

Qtコードがビルドされ、android-build ディレクトリにコピーされた後、GradleがJavaコードのビルドとアプリケーションのパッケージに使用されます。

Androidパッケージへの署名

リリース用の APK がビルドされたら、署名する必要があります。Qt Creator を使ったパッケージの署名の詳細については、Androidパッケージの署名を参照してください。そうでない場合は、CMake変数QT_ANDROID_SIGN_APKと QT_ANDROID_SIGN_AABをチェックしてください。

AAR(Androidアーカイブ)ファイルのビルド

cmake --build . --target aar

qmakeでビルドする

Qt 5 と同様に、qmake を使用してユーザープロジェクトをビルドすることができます。

注意: Qt 6 では、qmake を使ったマルチ ABI パッケージのビルドはサポートされていません。

QT_ANDROID_ABIS,QT_ANDROID_BUILD_ALL_ABIS,QT_PATH_ANDROID_ABI_<ABI>, QT_ANDROID_ABISも参照してください

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