コマンドラインから 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-v7aarm64-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も参照してください

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