Qt for OpenHarmony/zh: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
(update the png)
 
(3 intermediate revisions by one other user not shown)
Line 5: Line 5:


=OpenHarmony 介绍=
=OpenHarmony 介绍=
OpenHarmony是开放原子开源基金会孵化并运营的开源项目,目标是构建智能终端设备操作系统的框架与平台,面向全场景、全连接、全智能时代,推动万物互联产业繁荣发展。
OpenHarmony是开放原子基金会孵化并运营的开源项目,目标是构建智能终端设备操作系统的框架与平台,旨在面向全场景、全连接、全智能时代的到来,推动万物互联产业的蓬勃发展。


[https://gitee.com/openharmony OpenHarmony 开源项目]
[https://gitee.com/openharmony OpenHarmony 开源项目]
Line 17: Line 17:
但是如果包含的sdk不能满足你的需求,你可以通过下面的方法设置你想要使用的sdk版本:
但是如果包含的sdk不能满足你的需求,你可以通过下面的方法设置你想要使用的sdk版本:


对于 OpenHarmony 5,您需要安装 API 版本 12 SDK:
对于 OpenHarmony 5,您需要安装 API 版本 为12 的SDK:


[[File:DevEco_Studio_Preferences.png|alt=DevEco_Studio_Preferences|864x864px]]
[[File:DevEco_Studio_Preferences.png|alt=DevEco_Studio_Preferences|864x864px]]


为了避免因开发环境导致的任何问题,请首先确认是否可以使用 DevEco Studio 开发 Arkts 应用程序。
为了避免因开发环境导致的任何问题,请首先确认是否可以使用 DevEco Studio 来开发 Arkts 应用程序。
=Gerrit 简介=
=Gerrit 简介=
Qt 源代码托管在 Gerrit 上,用于代码审查和版本控制。有关如何使用 Gerrit 的所有必要信息都写在以下页面上:
Qt 源代码托管在 Gerrit 上,用于代码审查和版本控制。有关如何使用 Gerrit 的所有必要信息都可以在以下页面查看:
*[[Setting up Gerrit]]
*[[Setting up Gerrit]]
*[[Gerrit Introduction]]
*[[Gerrit Introduction]]
=如何获取 Qt for OpenHarmony 源代码=
=如何获取 Qt for OpenHarmony 源代码=
#访问并登录: [https://codereview.qt-project.org/ https://codereview.qt-project.org].
#访问并登录: [https://codereview.qt-project.org/ https://codereview.qt-project.org]
#点击右上角的“设置”,打开设置页面。
#点击右上角的“设置”,打开设置页面。
#点击“设置”->“HTTP 凭证”->“生成新密码”生成新密码。保存密码以便稍后使用“git clone”使用。
#点击“设置”->“HTTP 凭证”->“生成新密码”生成新密码。保存密码以便稍后使用“git clone”使用。
#访问 https://codereview.qt-project.org/admin/repos/qt/tqtc-qt5, 并克隆git 仓库地址。
#访问 https://codereview.qt-project.org/admin/repos/qt/tqtc-qt5, 并克隆git 仓库地址。
#cd tqtc-qt5
#cd tqtc-qt5
#git checkout tqtc/harmonyos-5.12.12  or  git checkout tqtc/harmonyos-5.15.16
#切换分支:git checkout tqtc/harmonyos-5.12.12  or  git checkout tqtc/harmonyos-5.15.16
#更新子模块:git submodule update --init --recursive
#更新子模块:git submodule update --init --recursive
[[File:Codereview-settings.png|left|873x873px]]
[[File:Codereview-settings.png|left|873x873px]]
Line 39: Line 39:


[[File:GENERATE-NEW-PASSWORD.png|left|874x874px]]
[[File:GENERATE-NEW-PASSWORD.png|left|874x874px]]




Line 54: Line 61:
=在 macOS 中为 Qt for OpenHarmony 构建 Qt 库=
=在 macOS 中为 Qt for OpenHarmony 构建 Qt 库=
===准备第三方依赖项===
===准备第三方依赖项===
Following instruction has been prepared based on macOS Sonoma 14.0. Does not represent a minimum dependency condition.
以下说明只是基于 macOS Sonoma 14.0进行准备, 并不代表最低依赖条件。
*git version 2.39.3
*git 版本 2.39.3
*python 3.12.0
*python 3.12.0
===系统环境变量===
===系统环境变量===
Open ''~/.zshrc'' or ''~/.bashrc'' and add the following:<syntaxhighlight lang="shell">
打开 ''~/.zshrc'' 或者''~/.bashrc'' ,并添加一下内容:<syntaxhighlight lang="shell">
local HARMONY_OS_API_VER=12
local HARMONY_OS_API_VER=12
local HOME_LIBRARY=${HOME}/Library
local HOME_LIBRARY=${HOME}/Library
Line 67: Line 74:
</syntaxhighlight>
</syntaxhighlight>
===构建 Qt 源代码===
===构建 Qt 源代码===
You can use below script to build Qt for arm64-v8a target.
您可以使用以下脚本以 arm64-v8a 为目标构建 Qt。


Please fill-in path to your local source directory.<syntaxhighlight lang="shell">
请填写您本地源目录的路径。<syntaxhighlight lang="shell">
#!/bin/sh
#!/bin/sh


Line 94: Line 101:
     -ohos-arch ${ARCH} \
     -ohos-arch ${ARCH} \
     -opengles3 \
     -opengles3 \
     -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d -skip qtcharts \
     -skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d \
     -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtdocgallery -skip qtfeedback \
     -skip qtconnectivity -skip qtdatavis3d -skip qtdoc -skip qtdocgallery -skip qtfeedback \
     -skip qtgamepad -skip qtgraphicaleffects -skip qtlocation -skip qtmacextras -skip qtnetworkauth \
     -skip qtgamepad -skip qtgraphicaleffects -skip qtlocation -skip qtmacextras -skip qtnetworkauth \
Line 101: Line 108:
     -skip qtspeech -skip qtsystems -skip qttools -skip qttranslations -skip qtvirtualkeyboard \
     -skip qtspeech -skip qtsystems -skip qttools -skip qttranslations -skip qtvirtualkeyboard \
     -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets \
     -skip qtwayland -skip qtwebchannel -skip qtwebengine -skip qtwebglplugin -skip qtwebsockets \
     -skip qtwebview -skip qtwinextras -skip qtx11extras -skip qtxmlpatterns -skip doc \
     -skip qtwebview -skip qtwinextras -skip qtx11extras -skip doc \
     -no-dbus \
     -no-dbus \
     -c++std c++14 \
     -c++std c++14 \
     -make tests
     -make tests
</syntaxhighlight>then,<syntaxhighlight lang="shell">
</syntaxhighlight>然后,<syntaxhighlight lang="shell">
make -j16
make -j16
make install
make install
Line 111: Line 118:
=在 macOS 中为 OpenHarmony 构建 Qt 应用程序=
=在 macOS 中为 OpenHarmony 构建 Qt 应用程序=
===在 Qt Creator 中为 OpenHarmony 创建开发工具包===
===在 Qt Creator 中为 OpenHarmony 创建开发工具包===
Go to '''Preferences''' → '''Kits''' → '''Qt Versions'''. Click the button '''Add…'''.
转到 '''Preferences''' → '''Kits''' → '''Qt Versions'''. 单击添加 '''Add…'''.按钮


[[File:Macos-qtversion-add.jpg|869x869px]]
[[File:Macos-qtversion-add.jpg|869x869px]]
===配置 Qt 版本===
===配置 Qt 版本===
Select the '''qmake''' file generated by compiling the Qt for OpenHarmony source code:
选择编译Qt for OpenHarmony源代码生成的 '''qmake文件:'''


[[File:Macos-oh-qmake.jpg|867x867px]]
[[File:Macos-oh-qmake.jpg|867x867px]]
===配置 编译器===
===配置 编译器===
Go to the Compilers tab. Click on the button Add, then select '''Custom''' → '''C'''.
转到 Compilers 选项卡. 单击 Add 按钮,,然后选择 '''Custom''' → '''C'''.


[[File:Oh-compile-c.png|alt=Oh-compile-c|866x866px]]
[[File:Oh-compile-c.png|alt=Oh-compile-c|866x866px]]


Set:
设置填写:


Name: '''OHOS Clang'''
Name: '''OHOS Clang'''
Line 135: Line 142:
[[File:Compilers-filled.jpg|866x866px]]
[[File:Compilers-filled.jpg|866x866px]]


Follow the above steps for the C++ compiler. However, this time, make sure to set Name to OHOS Clang++ and in Compiler path select the
对于 C++ 编译器,请按照上述步骤操作。不过,请确保将名称设置为 OHOS Clang++,并在编译器路径中选择


clang++ instead.
并使用 clang++


[[File:CppCompilers-filled.jpg|866x866px]]
[[File:CppCompilers-filled.jpg|866x866px]]
===配置套件===
===配置套件===
Go to '''Kits''' tab.
转到 '''Kits''' 选项卡。


Click the '''Add''' button.
单击 '''Add'''按钮。


[[File:Kits.jpg|869x869px]]
[[File:Kits.jpg|869x869px]]
===在 Qt Creator 中设置所需的环境变量===
===在 Qt Creator 中设置所需的环境变量===
Go '''Preferences''' → '''Environment''' → '''System''' and click the '''Change…''' button in Environment section.
转到 '''Preferences''' → '''Environment''' → '''System''' ,然后单击环境中系统选项的 '''Change…''' 按钮.


Add a new environment variable by adding a line:
通过添加一行来添加新的环境变量:


'''NATIVE_OHOS_SDK'''=/''path''/''to''/OpenHarmony/Sdk/12/native
'''NATIVE_OHOS_SDK'''=/''path''/''to''/OpenHarmony/Sdk/12/native
Line 156: Line 163:
=在 Windows 中为 OpenHarmony 构建 Qt 库=
=在 Windows 中为 OpenHarmony 构建 Qt 库=
===准备构建环境===
===准备构建环境===
*Clone qt5 repository from Gerrit using --recursive parameter to get also all submodules,[[Qt for OpenHarmony#How to get Qt for OpenHarmony source code]]:
*使用 --recursive 参数从 Gerrit 克隆 qt5 存储库以获取所有子模块,[[Qt for OpenHarmony/zh#如何获取 Qt for OpenHarmony 源代码]]


*Install DevEco Studio and download the OpenHarmony/native package from its SDK manager,[[Qt for OpenHarmony#HUAWEI DevEco Studio Installation]].
*安装 DevEco Studio 并从其 SDK 管理器中下载OpenHarmony/native 包,[[Qt for OpenHarmony/zh#华为 DevEco Studio 安装]]
 
*下载 MinGW 工具链<blockquote>例如 llvm-mingw-20230919-ucrt-x86_64.zip from [https://github.com/mstorsjo/llvm-mingw/releases Releases · mstorsjo/llvm-mingw] 解压并将文件夹复制到 d:\</blockquote>
*Download MinGW toolchain<blockquote>For example llvm-mingw-20230919-ucrt-x86_64.zip from [https://github.com/mstorsjo/llvm-mingw/releases Releases · mstorsjo/llvm-mingw] Unzip and copy folder for example to d:\</blockquote>
*安装Perl<blockquote>[https://strawberryperl.com/ Strawberry Perl for Windows]</blockquote>
*Install Perl<blockquote>[https://strawberryperl.com/ Strawberry Perl for Windows]</blockquote>
*将MinGW 和Perl路径添加到 PATH 环境变量中,如下所示:<blockquote>[[File:Add environment variable.png|frameless|423x423px]]</blockquote>
*Add MinGW and Perl paths to PATH environment variable as shown below:<blockquote>[[File:Add environment variable.png|frameless|423x423px]]</blockquote>
*另外在系统环境变量中添加 MINGW_ROOT PERL_ROOT <blockquote>[[File:Add root for environment.png|frameless|637x637px]]</blockquote>
*Add also MINGW_ROOT and PERL_ROOT environment variables as shown below:<blockquote>[[File:Add root for environment.png|frameless|637x637px]]</blockquote>
*打开命令提示符 (使用CMD工具) ,并按照一下方式设置环境变量:<blockquote><syntaxhighlight lang="bat">
*Open command prompt (cmd.exe was used) and set following environment variables:<blockquote><syntaxhighlight lang="bat">
REM set NATIVE_OHOS_SDK  
REM set NATIVE_OHOS_SDK  
SET NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native
SET NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native
Line 175: Line 181:
</syntaxhighlight></blockquote>
</syntaxhighlight></blockquote>
===构建===
===构建===
*With the same command prompt locate to your qt5 repository directory and create build directory parallel to that (Do NOT make the build
directory a subdirectory of the qt5 directory). Then Go to build directory, define a variable with skipped modules and run configure


command:<blockquote><syntaxhighlight lang="bat">
* 使用相同的命令提示符找到你的 qt5 仓库目录并创建与之并行的build目录(不要设置build目录是 qt5 仓库目录的子目录)。然后转到 build 目录,设置一个包含跳过的部分子模块的变量并运行 configure命令:<blockquote><syntaxhighlight lang="bat">
REM set QT_SKIPS  
REM set QT_SKIPS  
SET QT_SKIPS=-skip qt3d -skip qtactiveqt -skip qtandroidextras -skip qtcanvas3d -skip qtcharts -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 -skip qtxmlpatterns -no-dbus -skip doc
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
</syntaxhighlight><syntaxhighlight lang="bat">
</syntaxhighlight><syntaxhighlight lang="bat">
REM  configure command
REM  configure command
call ..\tqtc-qt5\configure.bat -v -xplatform ohos-clang -device-option CROSS_COMPILE=%LLVM_INSTALL_DIR%\bin -prefix 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
call ..\tqtc-qt5\configure.bat -v -xplatform ohos-clang -device-option CROSS_COMPILE=%LLVM_INSTALL_DIR%\bin -prefix 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
</syntaxhighlight></blockquote>
</syntaxhighlight></blockquote>
*After configure is finished successfully you can start building with mingw32-make:<blockquote><syntaxhighlight lang="bat">
*配置成功后,您可以使用 mingw32-make进行构建:<blockquote><syntaxhighlight lang="bat"> REM build mingw32-make mingw32-make -j8 </syntaxhighlight></blockquote>
REM build mingw32-make
*构建成功后,您可以使用以下命令开始安装:<blockquote><syntaxhighlight lang="bat"> mingw32-make install </syntaxhighlight></blockquote>
mingw32-make -j8
</syntaxhighlight></blockquote>
*After successful build you can start installing with following command:<blockquote><syntaxhighlight lang="bat">
mingw32-make install
</syntaxhighlight></blockquote>
=在 Windows 中为 OpenHarmony 构建 Qt 应用程序=
=在 Windows 中为 OpenHarmony 构建 Qt 应用程序=
The following parts of the instruction, that you have installed DevEco studio, OpenHarmony toolchains,already have the device of OpenHarmonyOS.
以下说明内容的前提是,您已经安装了DevEco studio、OpenHarmony工具链,已经有OpenHarmonyOS的设备。
 
请注意 Qt5 构建 + 多个选项,目前 Arch 是 arm64-v8a。


Be aware that Qt5 build + multiple options, currently Arch is arm64-v8a.
===准备 下载Qt Creator 作为 Qt 开发的IDE ===
===准备 下载Qt Creator 作为 Qt 开发的IDE ===
Download Qt Creator,create a kit for OpenHarmony manually
下载 Qt Creator,手动创建OpenHarmony构建套件
===在 Qt Creator 中为 OpenHarmony 创建开发工具包===
===在 Qt Creator 中为 OpenHarmony 创建开发工具包===
Go to Edit →Preferences→Kits
前往编辑 → 偏好设置 → 构建套件
===配置 Qt 版本===
===配置 Qt 版本===
Go to Qt Version tab. Click the button Add…[[File:Add kits.png|none|thumb|927x927px]]Go to the folder in which Qt 5.12.12 for OHOS was installed (it should be installed in a path specified with PREFIX), then go to the bin folder, and select the qmake application and click Open. For example, I compiled the Qt source code with PREFIX=C:\Qt\qt-5.12.12-ohos, so qmake will be in C:\Qt\qt-5.12.12-ohos\bin\qmake. Set Name to Qt %{Qt:Version} for OHOS. At this point, there should be information, that there are no compilers that can produce code for this Qt version.[[File:Add qt version.png|none|thumb|986x986px]]
转到 Qt版本选项卡,单击添加按钮[[File:Add kits.png|none|thumb|927x927px]]转到安装 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 版本生成代码的编译器。[[File:Add qt version.png|none|thumb|986x986px]]
===配置编译器===
===配置编译器===
Go to the Compilers tab. Click on the button Add, then select Custom→C
转到“编译器”选项卡。单击“添加”按钮,然后选择“自定义”→“C”


Set Name to OHOS Clang.
将名称设置为 OHOS Clang。


Assuming you have followed the instruction to build Qt 5.12.12 for OHOS from sources, you should have llvm-mingw already installed. If not, please follow the MinGW toolchain installation step[[Qt for OpenHarmony#Preparing the Build Environment]]
假设您已按照说明从源代码开始构建 Qt 5.12.12 for OHOS,那么应该已经安装了 llvm-mingw。如果没有,请按照 MinGW 工具链安装步骤执行[[Qt for OpenHarmony/zh#准备构建环境]]


Set the Make path to mingw32-make.exe executable shipped with your MinGW toolchain. It should be located in <path-to-MinGW-toolchain>\bin\mingw32-make.exe. Do not forget to substitute <path-to-MinGW-toolchain>with the actual path.
Make 路径设置为 MinGW 工具链附带的 mingw32-make.exe 可执行文件。它应位于 <path-to-MinGW-toolchain>\bin\mingw32-make.exe。不要忘记将 <path-to-MinGW-toolchain> 替换为实际路径。


Change the ABI to '''arm - linux - generic - elf - 64bit'''[[File:Add clang c.png|none|thumb|993x993px]]Follow the above steps for the c++ compiler. However, this time, make sure to set Name to OHOS Clang++ and in Compiler path select the clang++.exe instead.[[File:Add clang c++.png|none|thumb|994x994px]]
ABI 更改为'''arm - linux - generic - elf - 64bit'''[[File:Add clang c.png|none|thumb|993x993px]]对于 c++ 编译器,请按照上述步骤操作。不过,这次请确保将名称设置为 OHOS Clang++,并在编译器路径中选择 clang++.exe。[[File:Add clang c++.png|none|thumb|994x994px]]
===配置套件===
===配置构建套件===
Go to Qt kits tab. Click the button Add…
转到 构建套件选项卡,单击添加按钮


Set Name to OHOS Clang
将名称设置为 OHOS Clang


Set Sysroot to D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native\sysroot. In Compiler section, select previously configured compilers for C(OHOS Clang) and C++(OHOS Clang++).
Sysroot 设置为 D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native\sysroot。在 Compiler 部分,选择之前配置的 C(OHOS Clang) C++(OHOS Clang++) 编译器。


In Qt version select previously configured Qt 5.12.12 for OHOS.
Qt 版本中选择之前为 OHOS 配置的 Qt 5.12.12。


Set Qt mkspec to ohos-clang.
Qt mkspec 设置为 ohos-clang。


The complete Kit should look like this:
完整的套件应如下所示:


[[File:Add ohos clang.png|frameless|991x991px]]
[[File:Add ohos clang.png|frameless|991x991px]]
===在 Qt Creator 中设置所需的环境变量===
===在 Qt Creator 中设置所需的环境变量===
Go to Edit→Preferences→Environment→System and click the Change…button in Environment section.
转到编辑→首选项→环境→系统,然后单击环境部分中的Change...按钮。


Add a new environment variable by adding a line NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native[[File:Add environment.png|none|thumb|981x981px]]
通过添加一行 NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native 添加新的环境变量[[File:Add environment.png|none|thumb|981x981px]]
===获取模板 DevEco 项目===
===获取 DevEco 项目模板===
Contact us to obtain a template DevEco project for building final OpenHarmony Qt applications. This will be used to run the Qt application on the OpenHarmony device.
请联系我们以获取用于构建最终 OpenHarmony Qt 应用程序的 DevEco 项目模板。这将用于在 OpenHarmony 设备上运行 Qt 应用程序。


Put the template DevEco project into a known location. Let’s call it <deveco-project>
DevEco 项目模板放入已知位置。我们将其命名为 <deveco-project>


Go to folder<deveco-project>\entry and create a folder<deveco-project>\entry\libs\arm64-v8a
转到文件夹 <deveco-project>\entry 并创建一个文件夹 <deveco-project>\entry\libs\arm64-v8a
===编译一个简单的 Qt 项目===
===编译一个简单的 Qt 项目===
To simplify this instruction, we will not create an application from scratch, instead we will use an existing example from widget.
为了简化此说明,我们不会从头开始创建应用程序,而是使用Qt widget的现有示例。


Go to your Documents folder and create a new folder called qt_creator_projects. Then go to<qt5-root>\examples\widgets\widgets folder in explorer and copy the whole calculator folder into the qt_creator_projects folder
转到您的 Documents 文件夹并创建一个名为 qt_creator_projects 的新文件夹。然后转到资源管理器中的 <qt5-root>\examples\widgets\widgets 文件夹并将整个计算器文件夹复制到 qt_creator_projects 文件夹中


Then, in QtCreator, click on '''File'''→'''Open File''' or Project, then go to the qt_creator_projects\calculator and select the calculator.profile.
然后,在 QtCreator 中,单击'''文件'''→'''打开文件'''或项目,然后转到 qt_creator_projects\calculator 并选择 calculator.pro。


In Configure Project tab select the '''OHOS Clang kit''' and click the '''Configure Project''' button.
在“配置项目”选项卡中,选择'''OHOS Clang 套件'''并单击'''“配置项目”'''按钮。


Trigger the compilation by clicking on '''Build'''→'''Build Project “calculator”''', or use shortcut: Ctrl+B. The project should compile without errors.
'''通过单击Build''' → '''Build Project “calculator”'''来触发编译,或者使用快捷键:Ctrl+B。项目应该可以顺利编译。


You should be able to find the compiled '''libcalculator.so''' file inside the Documents\qt_creators_projects\build-calculator-OHOS_Clang-Debug folder.
您应该能够在 Documents\qt_creators_projects\build-calculator-OHOS_Clang-Debug 文件夹中 找到已编译的'''libcalculator.so文件。'''
=在硬件上运行 Qt for OpenHamony 应用程序=
=在硬件上运行 Qt for OpenHamony 应用程序=
===构建最终的 OHOS 应用程序===
===构建最终的 OHOS 应用程序===
Copy the libcalculator.so file from the previous step into your<deveco-project>\entry\libs\arm64-v8a folder
将上一步中的 libcalculator.so 文件复制到您的 <deveco-project>\entry\libs\arm64-v8a 文件夹中


Then copy the needed library from <qt-install-path>\lib\ to <deveco-project>\entry\lib\arm64-v8a\
然后将所需的库从 <qt-install-path>\lib\ 复制到 <deveco-project>\entry\lib\arm64-v8a\


For example, for libQt5Widgets.so library it will be (Powershell):<syntaxhighlight lang="bat">
例如,对于 libQt5Widgets.so 库,它的复制方法如下(Powershell):<syntaxhighlight lang="bat">
Copy-Item "<qt-install-path>\lib\libQt5Widgets.so" -Destination "<deveco-project>\entry\libs\arm64-v8a\"
Copy-Item "<qt-install-path>\lib\libQt5Widgets.so" -Destination "<deveco-project>\entry\libs\arm64-v8a\"
</syntaxhighlight>Similarly, you can find all dependencies of the OHOS qpa plugin, to make sure, you have all necessary libraries.
</syntaxhighlight>类似地,您可以找到 OHOS qpa 插件的所有依赖项,以确保您拥有所有必要的库。
===修改 ets 中的初始加载===
===修改 ets 中的初始加载===
Once all libraries are copied, we can modify the eTS source code,
一旦复制了所有库,我们就可以修改 ets源代码,


Open the <deveco-project> in DevEco:[[File:Open template app.png|none|thumb|668x668px]]Open file <deveco-project>\entry\src\main\ets\qabilitystage\QAbilitystage.ts. Change the qtApplicationName variable to the name of our library( libcalculator.so ):[[File:Edit EntryAbility.ts.png|none|thumb|1073x1073px]]
在 DevEco 中打开 <deveco-project>[[File:Open template app.png|none|thumb|668x668px]]打开文件 <deveco-project>\entry\src\main\ets\qabilitystage\QAbilitystage.ets。将 qtApplicationName 变量更改为我们要使用的库的名称(libcalculator.so):[[File:Edit EntryAbility.ts.png|none|thumb|1073x1073px]]
===构建并运行应用程序===
===构建并运行应用程序===
Make sure the device is connected. Once it is connected, it should be visible in DevEco Studio[[File:Device .png|none|thumb|901x901px]]Then adding the signing configs,open '''file--project structure--signing configs''',check all the items,and click the OK.[[File:Tempsnip.png|none|thumb|900x900px]]Once the device is selected in DevEco Studio,you can build and run the application directly:[[File:Run app.png|none|thumb|1500x1500px]]After '''BUILD SUCCESSFUL,''' you can see the  the application is running on the target device.
确保设备已连接。连接后,它应该在 DevEco Studio 中可见。[[File:Device .png|none|thumb|901x901px]]然后添加签名配置,打开 '''file--project structure--signing configs''',勾选所有项,点击OK。[[File:Tempsnip.png|none|thumb|900x900px]]DevEco Studio 中选择设备后,您可以直接构建并运行应用程序:[[File:Run app.png|none|thumb|1500x1500px]]'''编译成功'''后,您可以看到应用程序在目标设备上正常运行。

Latest revision as of 08:31, 31 October 2024


中文 English

OpenHarmony 介绍

OpenHarmony是开放原子基金会孵化并运营的开源项目,目标是构建智能终端设备操作系统的框架与平台,旨在面向全场景、全连接、全智能时代的到来,推动万物互联产业的蓬勃发展。

OpenHarmony 开源项目

华为 DevEco Studio 安装

如果您想开发Qt for OpenHarmony应用程序,除了使用Qt Creator之外,还需要依赖DevEco Studio。

https://developer.huawei.com/consumer/cn/deveco-studio/

一般情况下,不需要配置DevEco Studio使用的sdk版本,因为DevEco Studio默认自带了一个sdk。

但是如果包含的sdk不能满足你的需求,你可以通过下面的方法设置你想要使用的sdk版本:

对于 OpenHarmony 5,您需要安装 API 版本 为12 的SDK:

DevEco_Studio_Preferences

为了避免因开发环境导致的任何问题,请首先确认是否可以使用 DevEco Studio 来开发 Arkts 应用程序。

Gerrit 简介

Qt 源代码托管在 Gerrit 上,用于代码审查和版本控制。有关如何使用 Gerrit 的所有必要信息都可以在以下页面查看:

如何获取 Qt for OpenHarmony 源代码

  1. 访问并登录: https://codereview.qt-project.org
  2. 点击右上角的“设置”,打开设置页面。
  3. 点击“设置”->“HTTP 凭证”->“生成新密码”生成新密码。保存密码以便稍后使用“git clone”使用。
  4. 访问 https://codereview.qt-project.org/admin/repos/qt/tqtc-qt5, 并克隆git 仓库地址。
  5. cd tqtc-qt5
  6. 切换分支:git checkout tqtc/harmonyos-5.12.12 or git checkout tqtc/harmonyos-5.15.16
  7. 更新子模块:git submodule update --init --recursive
Codereview-settings.png


GENERATE-NEW-PASSWORD.png










Git-address.png

在 macOS 中为 Qt for OpenHarmony 构建 Qt 库

准备第三方依赖项

以下说明只是基于 macOS Sonoma 14.0进行准备, 并不代表最低依赖条件。

  • git 版本 2.39.3
  • python 3.12.0

系统环境变量

打开 ~/.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

构建 Qt 源代码

您可以使用以下脚本以 arm64-v8a 为目标构建 Qt。

请填写您本地源目录的路径。

#!/bin/sh

# Target architecure
ARCH="arm64-v8a"

# Source and build directories
QT5_ROOT_DIR=<ENTER PATH TO YOUR qt/qt5 DIRECORY>
QT5_BUILD_DIR="$QT5_ROOT_DIR/build_${ARCH}"

# Prepare build directory
mkdir "$QT5_BUILD_DIR"
cd "$QT5_BUILD_DIR"

../configure \
    -v \
    -xplatform ohos-clang \
    -prefix ${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 -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 -skip doc \
    -no-dbus \
    -c++std c++14 \
    -make tests

然后,

make -j16
make install

在 macOS 中为 OpenHarmony 构建 Qt 应用程序

在 Qt Creator 中为 OpenHarmony 创建开发工具包

转到 PreferencesKitsQt Versions. 单击添加 Add….按钮

Macos-qtversion-add.jpg

配置 Qt 版本

选择编译Qt for OpenHarmony源代码生成的 qmake文件:

Macos-oh-qmake.jpg

配置 编译器

转到 Compilers 选项卡. 单击 Add 按钮,,然后选择 CustomC.

Oh-compile-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

Compilers-filled.jpg

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

并使用 clang++。

CppCompilers-filled.jpg

配置套件

转到 Kits 选项卡。

单击 Add按钮。

Kits.jpg

在 Qt Creator 中设置所需的环境变量

转到 PreferencesEnvironmentSystem ,然后单击环境中系统选项的 Change… 按钮.

通过添加一行来添加新的环境变量:

NATIVE_OHOS_SDK=/path/to/OpenHarmony/Sdk/12/native

Change-env.jpg

在 Windows 中为 OpenHarmony 构建 Qt 库

准备构建环境

  • 安装 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

    Strawberry Perl for Windows

  • 将MinGW 和Perl路径添加到 PATH 环境变量中,如下所示:

    Add environment variable.png

  • 另外在系统环境变量中添加 MINGW_ROOT 和 PERL_ROOT :

    Add root for environment.png

  • 打开命令提示符 (使用CMD工具) ,并按照一下方式设置环境变量:
    REM set NATIVE_OHOS_SDK 
    SET NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native
    
    REM set OHOS_SDK_SYSROOT 
    SET OHOS_SDK_SYSROOT=%NATIVE_OHOS_SDK%\sysroot
    
    REM set LLVM_INSTALL_DIR 
    SET LLVM_INSTALL_DIR=%NATIVE_OHOS_SDK%\llvm
    

构建

  • 使用相同的命令提示符找到你的 qt5 仓库目录并创建与之并行的build目录(不要设置build目录是 qt5 仓库目录的子目录)。然后转到 build 目录,设置一个包含跳过的部分子模块的变量并运行 configure命令:
    REM set QT_SKIPS 
    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
    
    REM  configure command
    call ..\tqtc-qt5\configure.bat -v -xplatform ohos-clang -device-option CROSS_COMPILE=%LLVM_INSTALL_DIR%\bin -prefix 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
    
  • 配置成功后,您可以使用 mingw32-make进行构建:
     REM build mingw32-make mingw32-make -j8
    
  • 构建成功后,您可以使用以下命令开始安装:
     mingw32-make install
    

在 Windows 中为 OpenHarmony 构建 Qt 应用程序

以下说明内容的前提是,您已经安装了DevEco studio、OpenHarmony工具链,已经有OpenHarmonyOS的设备。

请注意 Qt5 构建 + 多个选项,目前 Arch 是 arm64-v8a。

准备 下载Qt Creator 作为 Qt 开发的IDE

下载 Qt Creator,手动创建OpenHarmony构建套件

在 Qt Creator 中为 OpenHarmony 创建开发工具包

前往编辑 → 偏好设置 → 构建套件

配置 Qt 版本

转到 Qt版本选项卡,单击添加按钮

Add kits.png

转到安装 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 版本生成代码的编译器。

Add qt version.png

配置编译器

转到“编译器”选项卡。单击“添加”按钮,然后选择“自定义”→“C”

将名称设置为 OHOS Clang。

假设您已按照说明从源代码开始构建 Qt 5.12.12 for OHOS,那么应该已经安装了 llvm-mingw。如果没有,请按照 MinGW 工具链安装步骤执行Qt for OpenHarmony/zh#准备构建环境

将 Make 路径设置为 MinGW 工具链附带的 mingw32-make.exe 可执行文件。它应位于 <path-to-MinGW-toolchain>\bin\mingw32-make.exe。不要忘记将 <path-to-MinGW-toolchain> 替换为实际路径。

将 ABI 更改为arm - linux - generic - elf - 64bit

Add clang c.png

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

Add clang c++.png

配置构建套件

转到 构建套件选项卡,单击添加按钮

将名称设置为 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。

完整的套件应如下所示:

Add ohos clang.png

在 Qt Creator 中设置所需的环境变量

转到编辑→首选项→环境→系统,然后单击环境部分中的Change...按钮。

通过添加一行 NATIVE_OHOS_SDK=D:\oh\DevEcoStudio\sdk\HarmonyOS-NEXT-DB6\openharmony\native 添加新的环境变量

Add environment.png

获取 DevEco 项目模板

请联系我们以获取用于构建最终 OpenHarmony Qt 应用程序的 DevEco 项目模板。这将用于在 OpenHarmony 设备上运行 Qt 应用程序。

将 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 套件并单击“配置项目”按钮。

通过单击BuildBuild Project “calculator”来触发编译,或者使用快捷键:Ctrl+B。项目应该可以顺利编译。

您应该能够在 Documents\qt_creators_projects\build-calculator-OHOS_Clang-Debug 文件夹中 找到已编译的libcalculator.so文件。

在硬件上运行 Qt for OpenHamony 应用程序

构建最终的 OHOS 应用程序

将上一步中的 libcalculator.so 文件复制到您的 <deveco-project>\entry\libs\arm64-v8a 文件夹中

然后将所需的库从 <qt-install-path>\lib\ 复制到 <deveco-project>\entry\lib\arm64-v8a\

例如,对于 libQt5Widgets.so 库,它的复制方法如下(Powershell):

Copy-Item "<qt-install-path>\lib\libQt5Widgets.so" -Destination "<deveco-project>\entry\libs\arm64-v8a\"

类似地,您可以找到 OHOS qpa 插件的所有依赖项,以确保您拥有所有必要的库。

修改 ets 中的初始加载

一旦复制了所有库,我们就可以修改 ets源代码,

在 DevEco 中打开 <deveco-project>:

Open template app.png

打开文件 <deveco-project>\entry\src\main\ets\qabilitystage\QAbilitystage.ets。将 qtApplicationName 变量更改为我们要使用的库的名称(libcalculator.so):

Edit EntryAbility.ts.png

构建并运行应用程序

确保设备已连接。连接后,它应该在 DevEco Studio 中可见。

Device .png

然后添加签名配置,打开 file--project structure--signing configs,勾选所有项,点击OK。

Tempsnip.png

在 DevEco Studio 中选择设备后,您可以直接构建并运行应用程序:

Run app.png

编译成功后,您可以看到应用程序在目标设备上正常运行。