OpenHarmony是开放原子基金会孵化并运营的开源项目,目标是构建智能终端设备操作系统的框架与平台,旨在面向全场景、全连接、全智能时代的到来,推动万物互联产业的蓬勃发展。
华为DevEco Studio安装
如果您想开发Qt for OpenHarmony应用程序,除了使用Qt Creator之外,还需要依赖DevEco Studio。
一般情况下,不需要配置DevEco Studio使用的sdk版本,因为DevEco Studio默认自带了一个sdk。
但是如果包含的sdk不能满足你的需求,你可以通过下面的方法设置你想要使用的sdk版本:
对于OpenHarmony5,您需要安装API版本为12的SDK:
为了避免因开发环境导致的任何问题,请首先确认是否可以使用DevEco Studio来开发Arkts应用程序。
Qt源代码托管在Gerrit上,用于代码审查和版本控制。有关如何使用Gerrit的所有必要信息都可以在以下页面查看:
如何获取
Qt for OpenHarmony源代码
访问并登录:
https://codereview.qt-project.org。
点击右上角的“设置”,打开设置页面。
点击“设置”->“HTTP 凭证”->“生成新密码”生成新密码。保存密码以便稍后使用“git clone”使用。
访问https://codereview.qt-project.org/admin/repos/qt/tqtc-qt5,
并克隆git 仓库地址。
cd tqtc-qt5
切换分支:git checkout tqtc/harmonyos-5.12.12 or git checkout tqtc/harmonyos-5.15.16
更新子模块:git submodule update --init --recursive
在macOS中
为Qt for OpenHarmony构建Qt库
准备第三方依赖项
以下说明只是基于macOS Sonoma14.0进行准备,并不代表最低依赖条件。
git版本2.39.3
python3.12.0
系统环境变量
打开~/.zshrc或者~/.bashrc ,并添加一下内容:
构建Qt源代码
您可以使用以下脚本以arm64-v8a为目标构建Qt。
请填写您本地源目录的路径。
然后,
在macOS中为OpenHarmony
构建Qt应用程序
在Qt Creator中为OpenHarmony创建开发工具包
转到Preferences → Kits → Qt Versions. 单击添加Add….按钮
配置Qt版本
选择编译Qt for OpenHarmony源代码生成的qmake文件:
配置编译器
转到Compilers选项卡. 单击Add按钮,,然后选择Custom → C.
设置填写
Name: OHOS Clang
Compiler path:/path/to/OpenHarmony/Sdk/12/native/llvm/bin/clang
Make Path: /usr/bin/make
ABI: arm - linux - generic - elf - 64bit
对于C++编译器,请按照上述步骤操作。不过,请确保将名称设置为OHOS Clang++,并在编译器路径中选择并使用clang++。
配置套件
转到Kits选项卡。
单击Add按钮。
在Qt Creator中设置所需的环境变量
转到Preferences → Environment → System ,然后单击环境中系统选项的Change… 按钮.
通过添加一行来添加新的环境变量:
NATIVE_OHOS_SDK=/path/to/OpenHarmony/Sdk/12/native
在Windows中
为OpenHarmony构建Qt库
准备构建环境
使用recursive参数从Gerrit克隆qt5存储库以获取所有子模块,Qt for OpenHarmony/zh#如何获取Qt for OpenHarmony源代码。
安装DevEco Studio并从其SDK管理器中下载OpenHarmony/native包,Qt for OpenHarmony/zh#华为DevEco Studio安装。
下载MinGW工具链
例如llvm-mingw-20230919-ucrt-x86_64.zip from Releases · mstorsjo/llvm-mingw解压并将文件夹复制到 d:\
安装Perl
将MinGW和Perl路径添加到PATH环境变量中,如下所示
另外在系统环境变量中添加MINGW_ROOT和 PERL_ROOT :
打开命令提示符(使用CMD工具),并按照一下方式设置环境变量
构建
使用相同的命令提示符找到你的qt5仓库目录并创建与之并行的build目录(不要设置build目录是qt5仓库目录的子目录)。然后转到build目录,设置一个包含跳过的部分子模块的变量并运行configure命令:
配置成功后,您可以使用mingw32-make进行构建
构建成功后,您可以使用以下命令开始安装
在Windows中为OpenHarmony
构建Qt应用程序
以下说明内容的前提是,您已经安装了DevEco studio、OpenHarmony工具链,已经有OpenHarmonyOS的设备。
请注意Qt5构建 + 多个选项,目前Arch是arm64-v8a。
准备 下载Qt Creator作为Qt开发的IDE
下载Qt Creator,手动创建OpenHarmony构建套件
在Qt Creator中为OpenHarmony创建开发工具包
前往编辑 → 偏好设置 → 构建套件
配置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 OpenHarmony/zh#准备构建环境
将Make路径设置为MinGW工具链附带的mingw32-make.exe可执行文件。它应位于\bin\mingw32-make.exe。不要忘记将替换为实际路径。
将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项目模板。这将用于在OpenHarmony设备上运行Qt应用程序。
将DevEco项目模板放入已知位置。我们将其命名为
转到文件夹\entry并创建一个文件夹\entry\libs\arm64-v8a
编译一个简单的Qt项目
为了简化此说明,我们不会从头开始创建应用程序,而是使用Qt widget的现有示例。
转到您的Documents文件夹并创建一个名为 qt_creator_projects 的新文件夹。然后转到资源管理器中的\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文件。
在硬件上运行
Qt for OpenHamony应用程序
建最终的OHOS应用程序
将上一步中的libcalculator.so文件复制到您的\entry\libs\arm64-v8a文件夹中
然后将所需的库从\lib\ 复制到\entry\lib\arm64-v8a\
例如,对于libQt5Widgets.so库,它的复制方法如下(Powershell):
类似地,您可以找到OHOS qpa插件的所有依赖项,以确保您拥有所有必要的库。
修改ets中的初始加载
一旦复制了所有库,我们就可以修改ets源代码,
在DevEco中打开:
打开文件\entry\src\main\ets\qabilitystage\QAbilitystage.ets。将 qtApplicationName变量更改为我们要使用的库的名称(libcalculator.so)
构建并运行应用程序
确保设备已连接。连接后,它应该在DevEco Studio中可见。
然后添加签名配置,打开file--project structure--signing configs,勾选所有项,点击OK。
在DevEco Studio中选择设备后,您可以直接构建并运行应用程序:
编译成功后,您可以看到应用程序在目标设备上正常运行。