コマンドラインから 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-v8a
とx86
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-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アーカイブ)ファイルのビルド
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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。