通过命令行构建 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,则无需提供 SDK 和 NDK 参数,因为qt-cmake 会沿用构建 Qt 时使用的相同值。
使用 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还可以设置QT_ANDROID_ABIS目标属性,该属性指定了单个可执行目标所针对的 ABI 列表。例如:
qt_add_executable(MyApp main.cpp)
set_target_properties(MyApp PROPERTIES QT_ANDROID_ABIS "arm64-v8a;x86")MyApp 目标将仅针对armeabi-v7a 和arm64-v8a 进行构建,即使设置了QT_ANDROID_BUILD_ALL_ABIS 或QT_ANDROID_ABIS 变量也是如此。
创建 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 归档)文件
注意: Qt 6.8 引入了对AAR 构建的支持。
Android 归档(AAR)是一种 Android 库格式。与 APK 或 AAB 不同,它无法独立运行;而是旨在作为依赖项嵌入到原生 Android 应用程序中。当在原生 Android 活动(Activity)中托管 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.