从命令行构建 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/
- Windows:C:\Users\<USER>\AppData\Local\Android\Sdk\
注意: 如果使用的是自建Qt,则无需提供 SDK 和 NDK 参数,因为用于构建 Qt 的值与qt-cmake 相同。
使用 CMake 构建 multi-ABI 软件包
在 Qt 6.9 中,有几种构建多 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 multi-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
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/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
目标将仅针对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(安卓存档)文件
cmake --build . --target aar
使用 qmake 生成
您可以继续使用qmake
来构建用户项目,就像在 Qt 5 中一样。
注意: Qt 6 不支持使用qmake
来构建 multiABI 软件包。
另请参阅 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.