Mac构建Qt鸿蒙项目
本文介绍了在macOS系统上安装多版本DevEco Studio及配置Qt for OpenHarmony开发环境的完整流程。主要内容包括:1)通过解压和自定义目录安装新版DevEco Studio以避免版本冲突;2)下载配置Qt SDK并验证安装;3)创建Qt工程步骤,包括工程配置、文件替换和UIAbility组件设置;4)实现Qt Hello World示例,包含CMake配置、QML界面和C
1、多版本或指定位置的DevEco安装
1. 下载并解压新版 DevEco Studio
双击解压,得到 DevEco Studio.app 文件。
2. 手动移动 .app 文件到独立目录
● 不要直接双击运行!否则会默认安装到 /Applications 目录,与旧版冲突。
● 打开 访达(Finder),进入解压后的文件夹,右键点击 DevEco Studio.app,选择 “显示包内容”(可选,用于确认内容)。
拖拽 DevEco Studio.app 到自定义的独立目录,例如:
/Applications/DevEcoStudio_New/DevEco Studio.app
目录层级示例:
复制代码/Applications/
├── DevEco Studio.app # 旧版
└── DevEcoStudio_New/
└── DevEco Studio.app # 新版
3. 创建启动快捷方式(可选)
● 将新版本的 DevEco Studio.app 拖到 程序坞(Dock),或创建 别名(Alias) 到桌面。
● 右键点击 .app 文件,选择 “制作替身”,将替身放到桌面或常用位置。
4. 首次启动时选择独立 SDK 路径
● 双击新版本的 .app 文件启动。
● 首次启动时,DevEco Studio 会提示 配置 HarmonyOS SDK 路径。
● 关键点:点击“Browse”,选择独立的新目录,例如:
~/Library/Huawei/Sdk_New/
2、SDK下载与配置
1、获取Qt for OpenHarmony SDK
● 下载地址:Qt for OpenHarmony SDK
● 推荐版本:建议使用最新版本
2、安装名为QtForOpenHarmony的SDK目录文件
终端安装
步骤一:mkdir QtForOpenHarmony
步骤二:cd Downloads
步骤三:tar -xf Qt5.15.12_alpha_v7_arm64-v8a_openharmony_ndk_5.0.3.135_community_macos.tar.gz -C ~/QtForOpenHarmony
步骤四:cd ~/QtForOpenHarmony
步骤五:ls
验证是否安装成功
步骤一:cd bin
步骤二:./qmake -query
3、创建一个Qt工程
1、打开DevEco Studio,新建一个Native C++类型的空模版
● Project name:创建项目后的项目目录名称
● Bundle name:项目创建的唯一包名名称
● Save location:项目在电脑中存放的位置
● Compatible SDK:当前目录的最低兼容SDK版本
● Module name:项目主模块的名称
● Device type:项目可以运行到那种设备中
2、创建OpenHarmony工程
根据当前系统设备版本,进行版本设置,事例版本:20
● 运行环境是HarmonyOS时,字段类型是字符串,配置示例:“targetSdkVersion”: “6.0.1(20)”。
● 运行环境是OpenHarmony时,字段类型是数值,配置示例:“targetSdkVersion”: 20。
3、Qt 工程配置
找到项目模块下的build-profile.json5文件,arguments字段指定Qt SDK存储路径,abiFilters字段指定运行设备的架构
"externalNativeOptions": {
"path": "./src/main/cpp/CMakeLists.txt",
"arguments": "-DQT_PREFIX=/Users/miko/QtForOpenHarmony",
"cppFlags": "",
"abiFilters": ["arm64-v8a"]
}
将Qt SDK目录下的openharmony/qtbase所有目录复制替换到工程模块下的src/main/ets目录下
将Qt SDK目录下的qml目录分别拷贝到工程模块下的libs/arm64-v8a(qml库依赖)和src/main/resources/resfile(qml资源文件依赖)目录下
将Qt SDK目录下的plugins/platforms/libplugins_platforms_qopenharmony.so拷贝到工程模块下的libs/arm64-v8a目录下
模块module.json5文件配置UIAbility组件,这是应用的入口。“launchType”: "specified"表示该UIAbility为指定实例模式,若工程需要打开多个窗口时,应将launchType指定为specified。
4、编写一个Qt的Hello World
移除napi_init.cpp文件,修改CMakeLists.txt文件,并添加main.cpp、main.qml以及qml.qrc文件。
CMakeLists.txt
# the minimum version of CMake.
cmake_minimum_required(VERSION 3.5.0)
project(QtForHOSample)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})
list(APPEND CMAKE_FIND_ROOT_PATH ${QT_PREFIX})
include_directories(${NATIVERENDER_ROOT_PATH}
${NATIVERENDER_ROOT_PATH}/include)
find_package(QT NAMES Qt5 Qt6 REQUIRED COMPONENTS Core Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Concurrent Gui Network Qml Quick QuickControls2 Widgets QuickTemplates2 QmlWorkerScript)
add_library(entry SHARED main.cpp qml.qrc)
target_link_libraries(entry PRIVATE Qt${QT_VERSION_MAJOR}::Concurrent
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Network
Qt${QT_VERSION_MAJOR}::Qml
Qt${QT_VERSION_MAJOR}::Quick
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::QuickControls2
Qt${QT_VERSION_MAJOR}::QuickTemplates2
Qt${QT_VERSION_MAJOR}::QmlWorkerScript
Qt${QT_VERSION_MAJOR}::QOpenHarmonyPlatformIntegrationPlugin
)
main.qml
import QtQuick 2.15
import QtQuick.Window 2.15
Window {
width: 400
height: 300
visible: true
title: "Hello World QML"
Rectangle {
width: 300
height: 200
color: "lightblue"
anchors.centerIn: parent
Text {
text: "Hello World!"
font.pixelSize: 32
color: "darkblue"
anchors.centerIn: parent
}
}
}
qml.qrc
<?xml version="1.0" encoding="UTF-8"?>
<RCC>
<qresource prefix="/">
<file>main.qml</file>
</qresource>
</RCC>
main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
更多推荐


所有评论(0)