HarmonyOS鸿蒙Next中如何在系统上运行Qt应用程序?
HarmonyOS鸿蒙Next中如何在系统上运行Qt应用程序?
- 可以在鸿蒙系统上安装Qt开发环境吗?
- 如果无法鸿蒙系统上安装Qt开发环境,那么如何使开发好的Qt程序在鸿蒙系统上运行?
可以在鸿蒙系统上安装Qt开发环境
一、前置条件
- 申请HarmonyOS Qt使用权限:
- 商业版Qt:请咨询Qt公司申请权限。
- 开源版Qt:无需申请权限。
- License申请:
- 商业版Qt:开发者需要找Qt公司申请License。
- 开源版Qt:无需申请License。
- 源码下载地址:
二、配置开发环境
下面以商业版Qt(5.12.12)和开源版Qt(Qt 5.15.12),为例进行环境配置。
1.下载Qt源码:
(1)商业版Qt:
- 访问并登录商业版Qt官网,并点击右上角的“设置”,打开设置页面。
- 点击“设置”->“HTTP凭证”->“生成新密码”生成新密码。保存密码以便稍后使用
git clone使用。 - 访问商业版Qt源码仓并克隆git仓库地址,git命令示例:
git clone "https://xxxxxx@codereview.qt-project.org/a/qt/tqtc-qt5"。 - 进入tqtc-qt5文件夹:
cd tqtc-qt5 - 查看所有的tag:
git tag - 切换到该tag分支:
git checkout v5.12.12-harmonyos-20250610 - 下载Qt源码:
git submodule update --init --recursive
(2)开源版Qt:
- 下载开源Qt编译脚本工程:
git clone https://gitcode.com/qtforohos/Build.git - 安装依赖:
在项目根目录执行以下命令(获取的依赖包括
requests、GitPython、questionary、rich、py7zr):python -m pip install -r requirements.txt - 下载Qt源码:
# 初始化仓库并应用补丁(首次执行会创建/询问用户配置) python build-qt-ohos.py --init # 检查并准备开发环境(Windows 会自动下载 Perl/MinGW;任何平台会下载 OHOS SDK native 包) python build-qt-ohos.py --env_check
2.配置编译Qt源码环境:
- 安装DevEco Studio,安装成功后会自动安装native包,路径默认为:
..\sdk\default\openharmony\native。 注意:安装路径不能有中文,目录名称不能有空格! - 下载安装MinGW工具链:
- 下载安装Strawberry Perl for Windows:
- 将MinGW和Perl路径添加到PATH环境变量中
- 在系统环境变量中添加
MINGW_ROOT和PERL_ROOT: - 安装Python 3.10以上版本,并配置Path环境变量:
3.编译Qt源码:
(1)商业版Qt:
- 在下载Qt源码目录(tqtc-qt5),创建一个并行的build目录(不要设置build目录是Qt仓库目录的子目录)
- 在build目录下打开命令提示符(CMD工具),设置以下环境变量,其中
NATIVE_OHOS_SDK为DevEco Studio安装时的native包路径,QT5_ROOT_DIR为下载Qt源码的路径:SET NATIVE_OHOS_SDK=D:\soft_ware\DevecoStudio\DevEco_Studio\sdk\default\openharmony\native SET OHOS_SDK_SYSROOT=%NATIVE_OHOS_SDK%\sysroot SET LLVM_INSTALL_DIR=%NATIVE_OHOS_SDK%\llvm SET QT5_ROOT_DIR=D:\QT\business\tqtc-qt5 - 在同一个CMD窗口,设置部分跳过的子模块变量:
SET QT_SKIPS=-skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtdocgallery -skip qtfeedback -skip qtgamepad -skip qtgraphicaleffects -skip qtlocation -skip qtmacextras -skip qtnetworkauth -skip qtpim -skip qtpurchasing -skip qtqa -skip qtremoteobjects -skip qtrepotools -skip qtscript -skip qtscxml -skip qtsensors -skip qtserialbus -skip qtserialport -skip qtspeech -skip qtsystems -skip qttools -skip qttranslations -skip qtvirtualkeyboard -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets -skip qtwebview -skip qtwinextras -skip qtx11extras -no-dbus -skip doc - 运行configure命令,需要修改设置
-extprefix为Qt安装路径:call ..\tqtc-qt5\configure.bat -v -xplatform ohos-clang -device-option CROSS_COMPILE=%LLVM_INSTALL_DIR%\bin -prefix /data/storage/el1/bundle/libs/arm64 -extprefix D:\QT\business\qt-5.12.12-ohos -opensource -confirm-license -debug -no-use-gold-linker %QT_SKIPS% -nomake tests -nomake examples -no-gcc-sysroot -opengles3 -c++std c++14 -ohos-arch arm64-v8a - 注意:如果需要openssl的相关特性,请执行configure命令的时候添加以下选项:
其中变量%QT_SOURCE_DIR_OPENSSL%代表openssl头文件的路径。-openssl-runtime -I%QT_SOURCE_DIR_OPENSSL% -ssl - 配置成功后,使用mingw32-make进行构建:
mingw32-make -j8 - 使用以下命令开始安装,注意安装到最后不能有报错:
mingw32-make install - 编译成功后,会在指定的Qt安装目录下的bin目录下生成
qmake等文件
(2)开源版Qt:
- 一条命令完成配置、编译、安装,并打包产物:
- 编译后的产物目录参考:
# Qt 源码目录:{working_dir}/qt5 # 构建目录:{working_dir}/qt5/build/{release|debug} # 安装前缀(prefix):{working_dir}/output/Qt{QtVer}-ohos{OHOSVer}-{ABI} # 打包位置:{working_dir}/output/Qt{QtVer}_OHOS{OHOSVer}_{ABI}_{os}.{zip|tar.gz} Windows 打包为 .zip Linux/macOS 打包为 .tar.gz # 示例:output/Qt5.15.12-ohos15-arm64-v8a/ 与 output/Qt5.15.12_OHOS15_arm64-v8a_windows.zip
4.配置QtCreator环境:
配置Qt版本: 进入`编辑->Preferences->构建套件->Qt版本,新增Qt版本配置。将名称设置为Qt %{Qt:Version}(qt-5.12.12-ohos)。qmake path选择-extprefix设置的安装路径下的bin(比如:D:\QT\business\qt-5.12.12-ohos\bin)
配置编译器:
进入编辑->Preferences->构建套件->编译器,新增编译器配置(Custom)。将C compiler path和C++ compiler path设置为DevEco Studio\native路径下的clang(如:D:\soft_ware\DevEco_Studio\sdk\default\openharmony\native\llvm\bin\clang.exe)。
Make path设置为MinGW安装路径下的mingw32-make(如:D:\soft_ware\MinGW\llvm-mingw-20250613-ucrt-x86_64\bin\mingw32-make.exe)。
ABI需要更改为:arm-linux-generic-elf-64bit。
构建套件配置:
转到构建套件选项卡,添加构建套件。
修改编译器为上面配置的编译器配置(ohos-9)。
修改Qt版本为上面配置的Qt版本(Qt 5.12.12(qt-5.12.12-ohos))。
Sysroot选择DevEco Studio\native路径下的sysroot目录(D:\soft_ware\DevEco_Studio\sdk\default\openharmony\native\sysroot)。
Mkspec设置为ohos-clang(注:开源版Qt不需要设置该字段)。
在Qt Creator中设置所需的环境变量:
(1)进入编辑->Preferences->环境->系统,单击环境部分中的Change…按钮。将DevEcoStudio\native包路径添加为新的环境变量:
-
商业版
NATIVE_OHOS_SDK=D:\soft_ware\DevEco_Studio\sdk\default\openharmony\native -
开源版
OHOS_SDK_PATH=D:\software\DevecoStudio\DevEcoStudio\sdk\default\openharmony
(2)进入编辑->Preferences->环境->系统,单击Patch command部分中的浏览按钮。选择Perl\c\bin\patch.exe
更多关于HarmonyOS鸿蒙Next中如何在系统上运行Qt应用程序?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

你好,我按照评论区教程编译时,会出现该错误。是否有完整编译成功的教程
【解决方案】
- 可以在鸿蒙系统上安装Qt开发环境
- HarmonyOS SDK:最低支持 API 版本 15(HarmonyOS 5 及以上需 API 15+)
- 开发工具:需同时使用 Qt Creator(Qt 开发 IDE)和 华为 DevEco Studio(HarmonyOS 环境依赖,默认自带 SDK,可手动升级至 API 15+),且需先确认 DevEco Studio 可正常开发 Arkts 应用
Gerrit 简介
- Qt 源代码托管于 Gerrit(代码审查与版本控制平台),使用前需参考:Setting up Gerrit、Gerrit Introduction。
Qt for HarmonyOS 源代码获取
需通过 Gerrit 克隆仓库,步骤如下:
- 登录 Gerrit 平台:https://codereview.qt-project.org。
- 进入「设置 → HTTP 凭证 → 生成新密码」,保存密码用于后续
git clone。 - 克隆仓库:访问 https://codereview.qt-project.org/admin/repos/qt/tqtc-qt5,复制仓库地址执行
git clone。 - 切换分支(二选一):
git checkout tqtc/harmonyos-5.12.12或git checkout tqtc/harmonyos-5.15.16。 - 更新子模块:
git submodule update --init --recursive。
macOS 环境构建(Qt 库 + 应用)
1. 构建 Qt 库
(1)准备第三方依赖
- 基于 macOS Sonoma 14.0 验证,依赖版本:
git 2.39.3、python 3.12.0(非最低要求,供参考)。
(2)配置系统环境变量
编辑 ~/.zshrc 或 ~/.bashrc,添加以下内容:
local HARMONY_OS_API_VER=12
local HOME_LIBRARY=${HOME}/Library
export OHOS_SDK_ROOT=${HOME_LIBRARY}/OpenHarmony/Sdk
export HOS_SDK_HOME=${HOME_LIBRARY}/OpenHarmony/Sdk
export OHOS_SDK_12=${HOS_SDK_HOME}/${HARMONY_OS_API_VER}
export NATIVE_OHOS_SDK=${OHOS_SDK_12}/native
(3)构建源代码
-
目标架构:
arm64-v8a,需替换脚本中<ENTER PATH TO YOUR qt/qt5 DIRECORY>为本地源码路径:# 创建构建目录 ARCH="arm64-v8a" QT5_ROOT_DIR=<本地Qt5源码路径> QT5_BUILD_DIR="$QT5_ROOT_DIR/build_${ARCH}" mkdir "$QT5_BUILD_DIR" && cd "$QT5_BUILD_DIR" # 执行配置(跳过非必要模块,启用OpenGLES3) ../configure \ -v -xplatform ohos-clang \ -prefix /data/storage/el1/bundle/libs/arm64 \ -extprefix ${NATIVE_OHOS_SDK}/opt/Qt/5.12.12/ohos-${ARCH}-clang/ \ -opensource -confirm-license -release \ -no-use-gold-linker -no-gcc-sysroot -ohos-arch ${ARCH} -opengles3 \ -skip qt3d -skip qtactiveqt ...(省略多个非必要模块) \ -no-dbus -c++std c++14 -nomake examples -nomake tests # 编译与安装(-j16 为线程数,可调整) make -j16 make install -
若需 OpenSSL 特性,在
configure中添加:-openssl-runtime -I"${QT_SOURCE_DIR_OPENSSL}" -ssl(QT_SOURCE_DIR_OPENSSL为 OpenSSL 头文件路径,可从 openharmony/third_party_openssl 获取)。
2. 构建 Qt 应用程序(Qt Creator 配置)
(1)创建开发工具包
进入 Qt Creator「Preferences → Kits → Qt Versions」,点击「Add」,选择构建 Qt 库时生成的 qmake 文件。
(2)配置编译器
- C 编译器:「Compilers → Add → Custom → C」,名称设为
OHOS Clang,路径为${NATIVE_OHOS_SDK}/llvm/bin/clang,Make 路径为/usr/bin/make,ABI 设为arm-linux-generic-elf-64bit。 - C++ 编译器:步骤同上,名称设为
OHOS Clang++,路径选择clang++。
(3)配置套件
「Kits → Add」,创建新套件(需关联上述 Qt 版本和编译器)。
(4)设置环境变量
「Preferences → Environment → System → Change」,添加:NATIVE_OHOS_SDK=<路径>/OpenHarmony/Sdk/12/native。
Windows 环境构建(Qt 库 + 应用)
1. 构建 Qt 库
(1)准备构建环境
-
克隆源码:带
--recursive参数克隆 tqtc-qt5 仓库(确保子模块完整)。 -
安装工具:
- DevEco Studio(下载 HarmonyOS/native 包);
- MinGW 工具链(例:llvm-mingw-20230919-ucrt-x86_64.zip,解压至
d:\); - Perl(Strawberry Perl for Windows)。
-
配置环境变量:
- 向
PATH添加 MinGW 和 Perl 的bin目录; - 新增系统变量:
MINGW_ROOT=<MinGW路径>、PERL_ROOT=<Perl路径>。
- 向
-
命令行设置变量(CMD 中执行):
SET NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native SET OHOS_SDK_SYSROOT=%NATIVE_OHOS_SDK%\sysroot SET LLVM_INSTALL_DIR=%NATIVE_OHOS_SDK%\llvm SET QT5_ROOT_DIR=D:\oh\tqtc-qt5
(2)构建与安装
-
创建构建目录(与源码目录同级,非子目录),进入目录后设置跳过模块变量:
SET QT_SKIPS=-skip qt3d -skip qtactiveqt ...(省略多个非必要模块)-no-dbus -skip doc -
执行配置(需替换路径):
call ..\tqtc-qt5\configure.bat -v -xplatform ohos-clang \ -device-option CROSS_COMPILE=%LLVM_INSTALL_DIR%\bin \ -prefix /data/storage/el1/bundle/libs/arm64 \ -extprefix c:\Qt\qt-5.12.12-ohos \ -opensource -confirm-license -debug -no-use-gold-linker \ %QT_SKIPS% -nomake tests -nomake examples -no-gcc-sysroot -opengles3 -c++std c++14 -ohos-arch arm64-v8a- 需 OpenSSL 时添加:
-openssl-runtime -I%QT_SOURCE_DIR_OPENSSL% -ssl(头文件路径同 macOS)。
- 需 OpenSSL 时添加:
-
编译与安装:
mingw32-make -j8 # -j8 为线程数 mingw32-make install
2. 构建 Qt 应用程序(Qt Creator 配置)
(1)核心配置步骤
- 配置 Qt 版本:「偏好设置 → Kits → Qt Versions → Add」,选择
C:\Qt\qt-5.12.12-ohos\bin\qmake,名称设为Qt %{Qt:Version} for OHOS。 - 配置编译器:同 macOS 逻辑,C 编译器路径为 MinGW 的
clang.exe,C++ 为clang++.exe,Make 路径为mingw32-make.exe,ABI 为arm-linux-generic-elf-64bit。 - 配置套件:「Kits → Add」,名称设为
OHOS Clang,Sysroot 设为D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native\sysroot,关联上述 Qt 版本和编译器,Qt mkspec 设为ohos-clang。 - 设置环境变量:添加
NATIVE_OHOS_SDK=<上述路径>。
(2)获取模板与编译示例
- 下载 DevEco 项目模板:http://codereview.qtcompany.cn:29416/template/,在模板
entry目录下创建libs/arm64-v8a。 - 编译示例(以 Qt 计算器为例):
- 复制
<qt5-root>\examples\widgets\widgets\calculator到项目目录,用 Qt Creator 打开calculator.pro,选择OHOS Clang套件编译,生成libcalculator.so(路径:build-calculator-OHOS_Clang-Debug)。
- 复制
在 HarmonyOS 硬件上运行应用
1. 准备应用文件
- 复制
libcalculator.so到 DevEco 模板的entry\libs\arm64-v8a目录。 - 复制 Qt 依赖库:从
<Qt安装路径>\lib\复制必要库(如libQt5Widgets.so)到上述libs目录。
2. 修改与运行
- 修改 ETS 代码:在 DevEco Studio 中打开模板,编辑
entry\src\main\ets\common\QtAppConstants.ets,将APP_LIBRARY_NAME改为libcalculator.so。 - 设备配置:连接硬件设备(确保 DevEco 可识别),配置签名(「file → project structure → signing configs」,勾选所有项)。
- 构建运行:在 DevEco Studio 中选择设备,点击运行,编译成功后应用将在设备上启动。
注意:
- 架构支持:当前仅验证
arm64-v8a架构。 - Qt 版本:支持 5.12.12 和 5.15.16(对应 HarmonyOS 分支)。
- 问题排查:优先确保 DevEco Studio 可正常开发 Arkts 应用,避免环境依赖冲突。
可以的~~~~
在 Windows 中为 HarmonyOS 构建 Qt 应用程序
以下说明内容的前提是,您已经安装了DevEco studio、HarmonyOS工具链,已经有HarmonyOS的设备。
请注意 Qt5 构建 + 多个选项,目前 Arch 是 arm64-v8a。
准备 下载Qt Creator 作为 Qt 开发的IDE
下载 Qt Creator,手动创建HarmonyOS构建套件
在 Qt Creator 中为 HarmonyOS 创建开发工具包
前往编辑 → 偏好设置 → 构建套件
配置 Qt 版本
转到 Qt版本选项卡,单击添加按钮

转到安装 Qt 5.12.12 for OHOS 的文件夹(应安装在 PREFIX 指定的路径中),然后转到 bin 文件夹,选择 qmake 应用程序并单击打开。例如,之前使用 PREFIX=C:\Qt\qt-5.12.12-ohos 编译了 Qt 源代码,因此 qmake 将位于 C:\Qt\qt-5.12.12-ohos\bin\qmake。将名称设置为 Qt %{Qt:Version} for OHOS。此时,应该有信息表明没有可以为此 Qt 版本生成代码的编译器。

配置编译器
转到“编译器”选项卡。单击“添加”按钮,然后选择“自定义”→“C”
将名称设置为 OHOS Clang。
假设您已按照说明从源代码开始构建 Qt 5.12.12 for OHOS,那么应该已经安装了 llvm-mingw。如果没有,请按照 MinGW 工具链安装步骤执行Qt for HarmonyOS/zh#准备构建环境
将 Make 路径设置为 MinGW 工具链附带的 mingw32-make.exe 可执行文件。它应位于 <path-to-MinGW-toolchain>\bin\mingw32-make.exe。不要忘记将 <path-to-MinGW-toolchain> 替换为实际路径。
将 ABI 更改为arm - linux - generic - elf - 64bit

对于 c++ 编译器,请按照上述步骤操作。不过,这次请确保将名称设置为 OHOS Clang++,并在编译器路径中选择 clang++.exe。

配置构建套件
转到 构建套件选项卡,单击添加按钮
将名称设置为 OHOS Clang
将 Sysroot 设置为 D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native\sysroot。在 Compiler 部分,选择之前配置的 C(OHOS Clang) 和 C++(OHOS Clang++) 编译器。
在 Qt 版本中选择之前为 OHOS 配置的 Qt 5.12.12。
将 Qt mkspec 设置为 ohos-clang。
完整的套件应如下所示:

在 Qt Creator 中设置所需的环境变量
转到编辑→首选项→环境→系统,然后单击环境部分中的Change…按钮。
通过添加一行 NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native 添加新的环境变量

获取 DevEco 项目模板
请联系我们以获取用于构建最终 OpenHarmony Qt 应用程序的 DevEco 项目模板。这将用于在 HarmonyOS 设备上运行 Qt 应用程序。 开发者也可以从以下链接获取最新模版: http://codereview.qtcompany.cn:29416/template/
将 DevEco 项目模板放入已知位置。我们将其命名为 <deveco-project>
转到文件夹 <deveco-project>\entry 并创建一个文件夹 <deveco-project>\entry\libs\arm64-v8a
编译一个简单的 Qt 项目
为了简化此说明,我们不会从头开始创建应用程序,而是使用Qt widget的现有示例。
转到您的 Documents 文件夹并创建一个名为 qt_creator_projects 的新文件夹。然后转到资源管理器中的 <qt5-root>\examples\widgets\widgets 文件夹并将整个计算器文件夹复制到 qt_creator_projects 文件夹中
然后,在 QtCreator 中,单击文件→打开文件或项目,然后转到 qt_creator_projects\calculator 并选择 calculator.pro。
在“配置项目”选项卡中,选择OHOS Clang 套件并单击**“配置项目”**按钮。
通过单击Build → **Build Project “calculator”**来触发编译,或者使用快捷键:Ctrl+B。项目应该可以顺利编译。
您应该能够在 Documents\qt_creators_projects\build-calculator-OHOS_Clang-Debug 文件夹中 找到已编译的libcalculator.so文件。
在HarmonyOS Next上运行Qt应用,需使用ArkTS/ArkUI进行原生开发,不支持直接运行Qt跨平台应用。若需迁移,需将Qt代码逻辑转换为ArkTS,并使用鸿蒙的UI框架重构界面。目前无官方Qt适配方案。
目前,HarmonyOS Next 系统本身不直接支持安装或运行传统的 Qt 应用程序。原因在于 HarmonyOS Next 采用了全新的纯鸿蒙内核,不再兼容 Linux 内核 AOSP,因此无法直接运行基于 Linux 环境的 Qt 应用。
针对你的问题,具体说明如下:
-
无法在 HarmonyOS Next 系统上安装 Qt 开发环境或运行时。 系统没有提供兼容的 Linux 库和依赖,Qt 应用程序所需的运行条件在 HarmonyOS Next 上不存在。
-
若要让现有 Qt 应用程序在 HarmonyOS Next 上运行,目前唯一可行的技术路径是 进行应用代码的迁移和重写:
- 你需要将 Qt 应用的核心逻辑(C/C++ 部分)通过 HarmonyOS Native API (ArkTS/NAPI) 进行封装和调用。
- 原有的 Qt 界面(QML 或 Widgets)需要完全使用 HarmonyOS 的 ArkUI 框架(推荐声明式开发范式)进行重新开发。
- 本质上,这是在 HarmonyOS 平台上,使用其原生开发工具(DevEco Studio)和框架,重新构建一个功能等效的全新应用。
总结: 无法直接将 Qt 应用部署到 HarmonyOS Next。必须将其改造为纯鸿蒙原生应用,这是一个涉及界面重绘和底层接口适配的移植开发过程,而非简单的兼容性运行。

