このページでは

コマンドラインからの Android 向け Qt プロジェクトのビルド

CMake を使用したビルド

インストール済みの Qt を使用して CMake プロジェクトをビルドするには、たとえば Linux の場合、qt-cmakeラッパーとともに以下のコマンドを使用します:

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

このページでは、簡略化のためLinux用のAndroid SDKのパスを例として使用していますが、これらのコマンドを実行する際は、必ずお使いのシステムに応じた適切なパスを使用してください。

Android SDKは通常、Qt Creator やAndroid Studioによって以下の場所にインストールされます:

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

注: 自作の Qtを使用している場合は 、Qt のビルドに使用したのと同じ値がqt-cmake でも使用されるため、SDK および NDK の引数を指定する必要はありません。

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

Qt 6.12 では、マルチ 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/27.2.12479018 \
    -S <source_directory> -B <build_directory>
    -GNinja

QT_ANDROID_ABIS変数を使用することで、プロジェクトのビルド対象となる ABI のリストをカスタマイズできます。対応する Qt for Android 開発キットは、前述のディレクトリ構造に従っている必要があります。次のコマンドラインは、arm64-v8a およびx86 の ABI のみを対象とするプロジェクトを設定します:

~/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/27.2.12479018 \
    -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/27.2.12479018 \
    -S <source_directory> -B <build_directory>
    -GNinja

また、単一の実行可能ファイルターゲットがビルドされる対象となるABIのリストを指定するQT_ANDROID_ABISターゲットプロパティを設定することも可能です。例:

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-v7a およびarm64-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 Archive)ファイルのビルド

注:AAR ビルドのサポートは Qt 6.8 で導入されました。

Android Archive (AAR)は、Android ライブラリのフォーマットです。APK や AAB とは異なり、単独で実行することはできず、ネイティブの Android アプリケーションに依存関係として組み込まれることを想定しています。これは、ネイティブの Android アクティビティ内で Qt Qml コンテンツをホストする場合の典型的な構成です。

AAR を作成するには、通常通り`qt_add_executable`を使用して Qt アプリケーションを定義します。AAR ビルドターゲットは、APK および AAB ターゲットと並んで自動的に作成されます。プロジェクト内のすべての AAR パッケージをビルドするには、次のようにします:

cmake --build . --target aar

myapp という名前の特定のターゲット用のAARのみをビルドするには:

cmake --build . --target myapp_make_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も参照してください 。

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