Qt for OpenHarmony 編譯鴻蒙調用的動態庫

簡介

Qt for Harmony? 是跨平臺開發框架 ?Qt? 與華為 ?OpenHarmony? 操作系統的深度集成方案,由 Qt Group 與華為聯合推動。其核心目標是為開發者提供一套高效工具鏈,實現 ??“一次開發,多端部署”?,加速 OpenHarmony 生態的應用遷移與創新。

本文主要實現在Windows端使用Harmony NDK在Qt Creator中編譯生成Qt for OpenHarmony調用的動態庫。

資源下載

在編譯之前需要先下載相關的工具包然后進行環境配置。

1.Qt SDK

Qt Wiki官網文檔中介紹可以獲取Qt for OpenHarmony的源碼,然后編譯源碼生成SDK,但是構建過程比較麻煩,感興趣的可以自己去按照步驟操作一遍,地址在這里。

此外,openharmony-sig項目中提供了SDK包,供使用者下載,發布包中只提供了Windows平臺下的SDK,直接下載現成的,可以省去編譯步驟。目前發布的最新版是:Qt For OpenHarmony Alpha v6版本
在這里插入圖片描述
我這邊下載的是 alpha_v6 Qt5.15.12 OpenHamrony arm64-v8a二進制包
在這里插入圖片描述
下載后可以看到,該版本名稱是 Qt5.15.12_alpha_v6_arm64-v8a_openharmony_ndk_4.1.7.8_community_win,這是基于鴻蒙OS v4.1.7版本,Qt版本是Qt5.15.12

解壓待用。

2. DevEco Studio安裝

DevEco Studio是華為推出的集成開發環境(IDE),專為HarmonyOS應用開發設計。支持HarmonyOS多設備、多語言開發,提供豐富的工具鏈和模板,幫助開發者高效構建全場景應用。
安裝DevEco Studio主要是為了方便下載不同版本的鴻蒙SDK,下載DevEco Studio會默認自帶一個sdk,需要選擇一個自己想要的版本。
下載地址在這里
在這里插入圖片描述
下載安裝后,在文件->設置,打開設置頁面:
在這里插入圖片描述
然后點擊OpenHarmony SDK頁面
在這里插入圖片描述
上一步中我們下載的Qt SDK對應的OpenHarmony 版本是4.1.7,所以這里我們需要下載對應的鴻蒙SDK版本,需要注意的是,選擇OpenHarmony SDK保存的位置一定不能帶有空格,否則后面的配置編譯將會出問題。

3.Qt安裝

這里建議安裝Qt6以上的版本,我本機安裝的是Qt6.8.2,Qt需要在線下載安裝,下載地址
在這里插入圖片描述
下載后選擇對應的Qt版本進行安裝即可。安裝Qt的時候注意要選擇安裝工具 mingw,編譯的時候需要用到,這部分就不再贅述。
在這里插入圖片描述

4.Cmake安裝

在上一步安裝Qt的時候可以同時選擇安裝工具Cmake,當然也可以自行下載Cmake進行安裝, 安裝完后記得設置環境變量。下載地址

環境配置

以上相關步驟準備好后,接下來是最重要的環境配置,在 Qt Creator 中為 OpenHarmony 創建開發工具包。

打開Qt Creator,點擊 編輯->首選項
在這里插入圖片描述

配置Qt版本

手動添加Qt版本,這里選擇上一步中下載的Qt SDK的路徑中的qmake
在這里插入圖片描述

配置編譯器

前面步驟中下載的鴻蒙SDK的路徑中包含有C 和C++ 的編譯器,點擊“添加”,選擇設置相應的路徑,如下:
在這里插入圖片描述

配置構建套件

切換到“構建套件頁面”,點擊添加,配置相應的選項,如下:
在這里插入圖片描述

環境變量

轉到編輯→首選項→環境→系統,然后單擊環境部分中的Change…按鈕,添加鴻蒙SDK的環境變量。
在這里插入圖片描述

以上配置,踩過很多坑,按照Qt Wiki文章中的方法進行配置除了很多問題,可能是因為版本不同導致的吧,有些配置項跟Qt Wiki文章中介紹的不一樣,不信邪的可以自行去操作一遍。

開始編譯

準備好一切過后,接下來就可以正式開始編譯了。
創建一個簡單的Qt工程,選擇編譯方式選擇qmake,然后選擇我們配置的OHOS Clang套件進行編譯:
在這里插入圖片描述
編譯完成便可得到一個.so動態庫文件。
接下來就可以在鴻蒙工程中調用這個動態庫文件使用了。

關于如何在DevEco Studio中創建鴻蒙項目并調用動態庫的問題,后續再更新~
也可以直接參考Qt Wiki的文章介紹,繼續進行。
在這里插入圖片描述

參考文章

https://gitee.com/openharmony
https://wiki.qt.io/Qt_for_OpenHarmony/zh
https://gitee.com/openharmony-sig/qt/wikis/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/84877.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/84877.shtml
英文地址,請注明出處:http://en.pswp.cn/web/84877.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

退休時,按最低基數補繳醫療保險15年大概需要多少錢

在南京退休時,如果醫保繳費年限不足(男需滿25年/女需滿20年),需補繳差額年限。若按最低基數一次性補繳15年醫保,費用估算如下(以2024年政策為例): 一、補繳金額計算公式 總補繳費用…

wireshark過濾顯示rtmp協議

wireshark中抓包顯示的數據報文中,明明可以看到有 rtmp 協議的報文,但是過濾的時候卻顯示一條都沒有 查看選項中的配置,已經沒有 RTMP 這個協議了,已經被 RTMPT 替換了,過濾框中輸入 rtmpt 過濾即可

《哈希表》K倍區間(解題報告)

文章目錄 零、題目描述一、算法概述二、算法思路三、代碼實現四、算法解釋五、復雜度分析 零、題目描述 題目鏈接:K倍區間 一、算法概述 計算子數組和能被k整除的子數組數量的算法。通過前綴和與哈希表的結合,高效地統計滿足條件的子數組。??需要注…

OpenShift 在 Kubernetes 多出的功能中,哪些開源?

OpenShift 在 Kubernetes 基礎上增加的功能中,部分組件是開源的(代碼可公開訪問),而另一些則是 Red Hat 專有(閉源)。以下是詳細分類: 1. 完全開源的功能(代碼可查) 這些…

【每天一個知識點】CITE-seq 技術

一、技術背景 單細胞RNA測序(scRNA-seq)自問世以來,極大推動了細胞異質性和組織復雜性的研究。但RNA水平并不能完全代表蛋白質水平,因為蛋白質的表達受轉錄后調控、翻譯效率及蛋白降解等多種因素影響。此外,許多細胞類…

中文Windows系統下程序輸出重定向亂碼問題解決方案

導言 最近我在用 Rust 開發時,遇到了一個讓人頭疼的問題:運行 cargo run -- version Cargo.toml > output.txt 將輸出重定向到文件后,打開 output.txt 卻發現里面全是亂碼!我的程序確實是UTF8但是輸出的文件卻是UTF16LE編碼的…

Python管理工具UV

常用 UV 命令 安裝 pip install uv 版本相關 uv python list 打印所有uv支持的python版本uv python install cpython-3.12 安裝指定的python版本uv run -p 3.12 test.py 用指定的python版本運行python代碼uv run -p 3.12 python 進入python執行環境。假如輸入的版本是一個本…

論文略讀:ASurvey on Intent-aware Recommender Systems

202406 arxiv 推薦系統在許多現代在線服務中發揮著關鍵作用,例如電子商務或媒體流服務,它們能夠為消費者和服務提供商創造巨大的價值。因此,過去幾十年來,研究人員提出了大量生成個性化推薦的技術方法。傳統算法——從早期的 Gro…

Neo4j 中存儲和查詢數組數據的完整指南

Neo4j 中存儲和查詢數組數據的完整指南 圖形數據庫 Neo4j 不僅擅長處理節點和關系,還提供了強大的數組(Array)存儲和操作能力。本文將全面介紹如何在 Neo4j 中高效地使用數組,包括存儲、查詢、優化以及實際應用場景。 數組在 Neo4j 中的基本使用 數組…

Android 編譯和打包image鏡像流程

1. 編譯命令 source build/envsetup.sh lunch aosp_car_arm64-userdebug make2. 編譯流程 source build/envsetup.sh 定義一些函數的環境變量,如 lunchvalidate_current_shell,確認 shell 環境set_global_paths,設置環境變量 ANDROID_GLOB…

MySQL:SQL 慢查詢優化的技術指南

1、簡述 在 Java 后端開發中,數據庫是系統性能瓶頸的高發地帶,而 慢 SQL 查詢 往往是系統響應遲緩的“罪魁禍首”。本文將全面梳理慢 SQL 的優化思路,并結合 Java 示例進行實戰演練。 2、慢查詢的常見表現 慢查詢通常表現為: 接…

leetcode543-二叉樹的直徑

leetcode 543 思路 路徑長度計算:任意兩個節點之間的路徑長度,等于它們的最低公共祖先到它們各自的深度之和遞歸遍歷:通過后序遍歷(左右根)計算每個節點的左右子樹深度,并更新全局最大直徑深度與直徑的關…

詳解main的參數并實現讀取文件

在 C 語言中,main函數的參數argc和argv用于接收命令行傳入的參數 main 函數的兩個參數 int main(int argc, char* argv[]) 假設顧客通過手機 APP 點餐,訂單信息會被傳遞給餐廳的處理系統(也就是你的程序)。 訂單信息結構 argc…

c++IO類

概述 c不直接處理輸入輸出,而是通過定義在標準類庫中的類來處理IO。這些類支持從設備讀取數據,向設備寫入數據的IO操作,設備可以是文件、控制臺窗口等。還可以從內存IO。 IO類 iostream: istream,wistreamostream,wo…

springboot的后端處理HTML的頁面請求

下面是一個完整的 Spring Boot 后端示例&#xff0c;用于接收 <form> 提交的文件上傳請求&#xff08;/article/uploadLifeImage 接口&#xff09;&#xff0c;并將上傳的文件保存到本地目錄。 ? 一、項目結構 upload-demo/ ├── src/ │ └── main/ │ ├…

深入探究 Go 語言中使用 SQLite 數據庫

引言 在軟件開發中&#xff0c;數據庫是管理和存儲數據的關鍵組件。SQLite 作為一款輕量級的嵌入式數據庫&#xff0c;因其零配置、高性能和易于集成等特性&#xff0c;成為眾多小型項目和嵌入式系統的理想選擇。而 Go 語言以其高效、簡潔的特點&#xff0c;為操作 SQLite 數據…

Portable Computer Power Adapter

Portable Computer Power Adapter 筆記本電源適配器&#xff0c;將220伏特的交流電轉化直流電 現在的適配器真的體積之大&#xff0c;讓我無法理解&#xff0c;本來便攜計算機為了方便減少體積重量&#xff0c;現在都倒反天罡了。讓我無法理解設計師是怎么干出來的。這玩意有2…

Uniapp 網絡請求封裝專題

目錄 一、前言 二、uniapp官方文檔 三、舉例演示 3.1 使用說明 3.2 Content-Type 3.2.1 ??基本概念 ??3.2.2 核心作用 3.2.3 常見 Content-Type 類型及使用場景 1&#xff09;文本類 a&#xff09;text/plain???? b&#xff09;text/html?? 2&#xf…

2025年滲透測試面試題總結-2025年HW(護網面試) 07(題目+回答)

安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 2025年HW(護網面試) 07 一、OWASP Top 10 2023核心漏洞 二、XSS竊取Cookie全流程 三、滲透測試五階段模型…

Seata分布式事務解決框架

Seata&#xff08;Simple Extensible Autonomous Transaction Architecture&#xff09;是一個開源的分布式事務解決方案&#xff0c;旨在幫助開發者更容易地在微服務架構中解決分布式事務問題。 你可以把它理解為一個工具箱&#xff0c;專門用來處理微服務之間操作的一致性。…