0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

峰會回顧第29期 | Qt For OpenHarmony

OpenHarmony TSC ? 來源:OpenHarmony TSC ? 作者:OpenHarmony TSC ? 2023-09-07 08:45 ? 次閱讀

演講嘉賓 | 蔡萬蒼

回顧整理 | 廖 濤

排版校對 | 李萍萍

b482039e-4d17-11ee-bb52-92fbcf53809c.png

嘉賓簡介

蔡萬蒼,13年C++/Qt開發(fā)相關(guān)工作經(jīng)驗,曾任職Qt公司,擔(dān)任技術(shù)支持、Qt咨詢師,協(xié)助國內(nèi)多家Qt企業(yè)版用戶完成基于Qt的軟件框架搭建,參與Qt開源社區(qū)Bug維護(hù)及修改,在基于Qt框架的軟件架構(gòu)設(shè)計、Qt跨平臺適配上有多年的技術(shù)積累和經(jīng)驗,開源書籍QmlBook-in-Chinese在github上star數(shù)達(dá)到1000+,現(xiàn)任職于軟通動力信息技術(shù)(集團(tuán))股份有限公司,擔(dān)任成都圖形框架研究院軟件開發(fā)專家角色,負(fù)責(zé)圖形框架研究院的技術(shù)管理工作。

內(nèi)容來源

第一屆開放原子開源基金會OpenHarmony技術(shù)峰會——生態(tài)與互聯(lián)分論壇

視頻回顧

? ?打開 嗶哩嗶哩APP 搜索 OpenHarmony-TSC 視頻更清晰

正 文 內(nèi) 容

在全球超過70個行業(yè),8000家公司,100萬的開發(fā)者都在使用Qt,通過Qt適配OpenHarmony,能夠豐富OpenHarmony的開發(fā)生態(tài)、應(yīng)用生態(tài),加速OpenHarmony在各行業(yè)的推廣使用。如何推進(jìn)和完成Qt在OpenHarmony上的適配呢?軟通動力成都圖形框架研究院軟件開發(fā)專家蔡萬蒼在第一屆OpenHarmony技術(shù)峰會上分享了精彩觀點。

b4d84c68-4d17-11ee-bb52-92fbcf53809c.png

01?

Qt 適配 OpenHarmony 意義

Qt是一個C++跨平臺開發(fā)框架,主要用于開發(fā)圖形用戶界面(Graphical User Interface,GUI)程序,具有跨平臺類庫(支持目前所有主流軟硬件平臺組合)、集成開發(fā)工具(縮短軟件產(chǎn)品上市時間)以及跨平臺集成開發(fā)環(huán)境(高生產(chǎn)力開發(fā)環(huán)境)等。全球超過100萬研發(fā)者使用過Qt,Qt的跨平臺開發(fā)能力覆蓋70多個行業(yè),是從1994年至今得到廣泛的認(rèn)同和驗證的主流技術(shù)。

b4f7fc20-4d17-11ee-bb52-92fbcf53809c.png

Qt適配OpenHarmony有什么意義?

一、擴(kuò)大OpenHarmony開發(fā)者陣營:基于Qt跨平臺特性及Qt For OpenHarmony的適配,吸引數(shù)量龐大的Qt開發(fā)人員在OpenHarmony上進(jìn)行跨平臺應(yīng)用遷移及應(yīng)用開發(fā),能夠?qū)崿F(xiàn)開發(fā)人員業(yè)務(wù)目標(biāo)與個人能力和OpenHarmony開源生態(tài)與技術(shù)發(fā)展的雙贏。

二、豐富OpenHarmony應(yīng)用生態(tài):Qt支持目前主流的所有操作系統(tǒng),如UBuntu、CentOS、OpenEuler、Android、OS X、iOS、Windows、VxWorks、QNX等,涵蓋從嵌入式平臺、移動平臺及PC桌面,基于Qt框架典型的桌面應(yīng)用,從娛樂到工業(yè)軟件都有所涉及,如暴雪的戰(zhàn)網(wǎng)客戶端、WPS、VirtualBox等等,大部分應(yīng)用程序都可以使用Qt實現(xiàn)。通過Qt適配OpenHarmony,能夠加速OpenHarmony的行業(yè)應(yīng)用推廣。

02?

計劃貢獻(xiàn)內(nèi)容

2.1??

適配計劃

Qt按使用及部署劃分,包含了設(shè)計工具、開發(fā)工具、框架必要模塊、框架附加模塊4個部分,基于OpenHarmony跨平臺開發(fā)考慮,總體計劃如下:

針對OpenHarmony的開發(fā)工具進(jìn)行補(bǔ)充

對Qt必要模塊進(jìn)行適配支持

對部分Qt附加模塊適配支持

b521cff0-4d17-11ee-bb52-92fbcf53809c.png

具體工作如下:

成立 OH_QT sig,完成Qt Core(Qt核心模塊)、Qt GUI(顯示相關(guān)代碼)以及Qt QML適配

完成Qt工程部署,適配Qt相關(guān)的開發(fā)工具,實現(xiàn)Qt應(yīng)用程序北向開發(fā)封裝;適配Qt附加庫部分,如Qt Multimedia,QtRemoteObjects

完成Qt示例及DEMO適配驗證、Qt單元測試適配驗證;向Qt社區(qū)申請立項OpenHarmony支持,申請OH_QT sig畢業(yè)

開發(fā)Qt工程轉(zhuǎn)換DevEco工程工具實現(xiàn)快速的應(yīng)用遷移配置

2.2??

Qt 配套開發(fā)工具

Qt開發(fā)者通常使用Qt配套的集成開發(fā)環(huán)境Qt Creator,采用qmake或cmake進(jìn)行軟件工程管理配置,為方便開發(fā)者對已有軟件進(jìn)行移植適配,我們會開發(fā)對應(yīng)的工程轉(zhuǎn)換工具,將Qt的應(yīng)用工程轉(zhuǎn)換為DevEco Application工程,幫助開發(fā)者快速實現(xiàn)應(yīng)用的遷移配置。

03?

技術(shù)難點分享

Qt本身是跨平臺的框架,我們要把它跟OpenHarmony做移植,無非考慮幾個問題:一是Qt應(yīng)用程序的界面如何在OpenHarmony上進(jìn)行顯示;OpenHarmony本身觸屏的輸入、鼠標(biāo)/鍵盤的輸入怎么能夠把它映射到Qt本身的應(yīng)用程序框架里去。需要了解Qt的QPA實現(xiàn)及系統(tǒng)接口調(diào)用的相關(guān)邏輯,就能實現(xiàn)Qt應(yīng)用程序在OpenHarmony上的運(yùn)行。

3.1??

QPA 實現(xiàn)及系統(tǒng)接口調(diào)用

Qt平臺抽象(QPA)是Qt的平臺抽象層,QPA插件是通過子類化各種QPlatform*類來實現(xiàn)系統(tǒng)接口的接入,例如用于窗口系統(tǒng)集成的QPlatformIntegration和QPlatformWindow以及用于更深層次的平臺主題化和集成的QPlatformTheme。

b530a52a-4d17-11ee-bb52-92fbcf53809c.png

QPA核心對象及作用:通過QPlatfromIntegration實現(xiàn)對QPA插件的對象聲明周期管理,Qt GUI等模塊通過Qt已完成的平臺抽象層相關(guān)類實現(xiàn)對系統(tǒng)底層的調(diào)用,其中比較重要的實現(xiàn)類包括:EventDispatcher(實現(xiàn)系統(tǒng)底層事件接入)、BackingStore(系統(tǒng)圖形繪制雙緩存實現(xiàn))、Screen(系統(tǒng)屏幕對象,用于管理Window顯示)、Window(系統(tǒng)窗口對象)、InputContext(系統(tǒng)輸入處理,包括鼠標(biāo)、輸入法等)、OpenGLContext(系統(tǒng)窗口OpenGL渲染上下文)以及Clipboard(系統(tǒng)剪切板)。

b54edd2e-4d17-11ee-bb52-92fbcf53809c.png

Qt Widget For OpenHarmony渲染流程:基于Qt框架自成體系的圖形框架和事件系統(tǒng),在OpenHarmony上基于XComponent生成的EGLSurface,采用圖像二維繪制的方式在OpenGL Surface上實現(xiàn)雙緩存渲染機(jī)制,完成Qt Widget的窗口內(nèi)容渲染。

b561d0d2-4d17-11ee-bb52-92fbcf53809c.png

Qt Quick For OpenHarmony渲染流程:Qt Quick采用自成體系的Scene Graph基于OpenGL標(biāo)準(zhǔn)接口實現(xiàn),QPA OpenHarmony插件基于XCompent生成EGL Surface,并通過QPA標(biāo)準(zhǔn)實現(xiàn)類重載實現(xiàn)PlatformIntegration實現(xiàn)與Scene Graph的OpenGLContext綁定,Qt Quick基于標(biāo)準(zhǔn)OpenGL接口在XComponent上實現(xiàn)圖形渲染。

b5713b8a-4d17-11ee-bb52-92fbcf53809c.png

OpenHarmony Touch事件接入:基于XComponent的事件監(jiān)控回調(diào),在QPA的InputContext實現(xiàn)中實現(xiàn)對XComponent的輸入監(jiān)控,將監(jiān)控的輸入轉(zhuǎn)換為Qt Event發(fā)送到Qt Event隊列中,由Qt框架實現(xiàn)對輸入的處理,完成對觸屏操作和鼠標(biāo)操作的處理。

b5891480-4d17-11ee-bb52-92fbcf53809c.png

基于NAPI的應(yīng)用框架接口調(diào)用:基于OpenHarmony的應(yīng)用接口規(guī)范,部分接口未提供NDK接口,需要通過Node.JS的C++插件NAPI調(diào)用ETS SDK的接口進(jìn)行實現(xiàn),QPA For OpenHarmony部分系統(tǒng)接口采用該種方式完成對系統(tǒng)接口的調(diào)用,例如系統(tǒng)剪切板。

b59f0b14-4d17-11ee-bb52-92fbcf53809c.png

基于TS腳本自定義符合Qt標(biāo)準(zhǔn)的對話框:Qt上層接口的QMessageBox支持系統(tǒng)默認(rèn)樣式對話框彈出,該接口在OpenHarmony的SDK中有提供,由于參數(shù)差異,無法通過NAPI直接調(diào)用,我們采用ETS語言實現(xiàn)后導(dǎo)入到DialogHelpers中進(jìn)行使用。目前系統(tǒng)輸入法采用NAPI接口進(jìn)行調(diào)用,通過Custom ETS實現(xiàn)對系統(tǒng)輸入法的調(diào)用進(jìn)行監(jiān)控,再傳入Qt Input Context轉(zhuǎn)換為Qt Key Event輸入到Qt框架,由于輸入法的高性能要求,后續(xù)會與OpenHarmony團(tuán)隊進(jìn)行溝通,考慮開放系統(tǒng)底層輸入法NDK接口。

b5b644f0-4d17-11ee-bb52-92fbcf53809c.png

3.2??

Qt For OpenHarmony 應(yīng)用管理

符合OpenHarmony標(biāo)準(zhǔn)的應(yīng)用管理:

啟動流程:(1)Qt框架按照Stage模型開發(fā)符合Stage-Ability,應(yīng)用程序通過EntryAbility調(diào)用啟動;(2)在QtAbilityStage的onCreate中,使用NAPI機(jī)制初始化Qt的Native模塊,并調(diào)用App自己的main入口函數(shù),拉起應(yīng)用邏輯。

退出流程:在EntryAbility的onDestory中,使用NAPI機(jī)制通知Qt的QPA模塊,退出Qt Framework的主循環(huán)及業(yè)務(wù)邏輯。

b5c3c2ec-4d17-11ee-bb52-92fbcf53809c.png

與傳統(tǒng)的C++應(yīng)用程序不同,遵循Openharmony的北向開發(fā)應(yīng)用管理,需要通過eTS框架完成應(yīng)用程序C/C++應(yīng)用程序main函數(shù)入口調(diào)用啟動。

由于XComponent的動態(tài)創(chuàng)建問題,目前QPA的NAPI函數(shù)調(diào)用放在index.ets中進(jìn)行調(diào)用,該問題還需要與OpenHarmony團(tuán)隊進(jìn)行溝通,討論基于OpenHarmony的最優(yōu)解:(1)基于ETS框架自定義ETS腳本,實現(xiàn)XComponent的動態(tài)創(chuàng)建,在ETS框架下實現(xiàn)應(yīng)用程序窗口管理;(2)基于NDK開發(fā)的XComponent的新增接口,在Qt App側(cè)實現(xiàn)應(yīng)用程序的窗口管理。

b5df10d8-4d17-11ee-bb52-92fbcf53809c.png

04?

總結(jié)與展望

基于Qt跨平臺特性及Qt For OpenHarmony的適配,能夠促進(jìn)OpenHarmony跨平臺應(yīng)用遷移及應(yīng)用開發(fā),對OpenHarmony技術(shù)生態(tài)有一定的積極作用,期待大家一塊參與到Qt適配OpenHarmony的相關(guān)工作中來。

E N D

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3548

    瀏覽量

    15738
收藏 人收藏

    評論

    相關(guān)推薦

    第二屆大會回顧25 | OpenHarmony上的Python設(shè)備應(yīng)用開發(fā)

    Python以其簡單、易學(xué)和功能強(qiáng)大而聞名,有著廣泛的用戶群體。采用Python開發(fā)有助于降低OpenHarmony的學(xué)習(xí)門檻。如何在OpenHarmony上用Python開發(fā)設(shè)備應(yīng)用,有哪些關(guān)鍵技術(shù)?電
    的頭像 發(fā)表于 08-27 11:53 ?241次閱讀
    第二屆大會<b class='flag-5'>回顧</b><b class='flag-5'>第</b>25<b class='flag-5'>期</b> | <b class='flag-5'>OpenHarmony</b>上的Python設(shè)備應(yīng)用開發(fā)

    OpenHarmony城市技術(shù)論壇10——上海站圓滿舉辦

    2024年8月18日下午,OpenHarmony城市技術(shù)論壇(以下簡稱“技術(shù)論壇”)10——上海站于上海交通大學(xué)徐匯校區(qū)圓滿舉辦。本次技術(shù)論壇以“通用智能、通用機(jī)器人和通用操作系統(tǒng)”為主題,從
    的頭像 發(fā)表于 08-21 09:35 ?156次閱讀
    <b class='flag-5'>OpenHarmony</b>城市技術(shù)論壇<b class='flag-5'>第</b>10<b class='flag-5'>期</b>——上海站圓滿舉辦

    OpenHarmony城市技術(shù)論壇8——廈門站圓滿落幕

    2024年4月20日上午,OpenHarmony城市技術(shù)論壇(以下簡稱“技術(shù)論壇”)8——廈門站,在廈門大學(xué)翔安校區(qū)信息學(xué)院圓滿落幕。此次論壇從“終端操作系統(tǒng)十大技術(shù)挑戰(zhàn)”出發(fā),以“存儲與網(wǎng)絡(luò)
    的頭像 發(fā)表于 04-22 10:38 ?280次閱讀
    <b class='flag-5'>OpenHarmony</b>城市技術(shù)論壇<b class='flag-5'>第</b>8<b class='flag-5'>期</b>——廈門站圓滿落幕

    OpenHarmony城市技術(shù)論壇8——廈門站圓滿舉辦

    2024年4月20日上午,OpenHarmony城市技術(shù)論壇(以下簡稱“技術(shù)論壇”)8——廈門站于廈門大學(xué)翔安校區(qū)信息學(xué)院圓滿舉辦。本次技術(shù)論壇從“終端操作系統(tǒng)十大技術(shù)挑戰(zhàn)”出發(fā),以“存儲與網(wǎng)絡(luò)
    的頭像 發(fā)表于 04-21 08:40 ?318次閱讀
    <b class='flag-5'>OpenHarmony</b>城市技術(shù)論壇<b class='flag-5'>第</b>8<b class='flag-5'>期</b>——廈門站圓滿舉辦

    第二屆大會回顧15 | OpenHarmony性能調(diào)優(yōu)工具介紹

    與適配,潤和軟件芯片業(yè)務(wù)創(chuàng)立人,潤和芯片全棧解決方案平臺HiHope發(fā)起人,帶領(lǐng)公司進(jìn)軍國際芯片領(lǐng)域并成為ARM生態(tài)圈Linaro重要合作伙伴。OpenHarmony項目群工作委員會成員,OpenHarmony Dev-Board SIG(開發(fā)板興趣組)創(chuàng)立人及組長。 視
    的頭像 發(fā)表于 03-05 08:40 ?473次閱讀
    第二屆大會<b class='flag-5'>回顧</b><b class='flag-5'>第</b>15<b class='flag-5'>期</b> | <b class='flag-5'>OpenHarmony</b>性能調(diào)優(yōu)工具介紹

    Qt For OpenHarmony圖形化的進(jìn)展突破

    Qt 適配 OpenHarmony 意義 Qt 是一個 C++ 跨平臺開發(fā)框架,主要用于開發(fā)圖形用戶界面(Graphical User Interface,GUI)程序,具有跨平臺類庫(支持目前
    的頭像 發(fā)表于 02-02 14:29 ?1113次閱讀
    <b class='flag-5'>Qt</b> For <b class='flag-5'>OpenHarmony</b>圖形化的進(jìn)展突破

    OpenHarmony城市技術(shù)論壇——6(武漢站)圓滿舉辦

    點擊藍(lán)字 ╳ 關(guān)注我們 開源項目 OpenHarmony 是每個人的 OpenHarmony 2023年12月23日下午,OpenHarmony城市技術(shù)論壇(以下簡稱“技術(shù)論壇”)——
    的頭像 發(fā)表于 12-26 21:20 ?630次閱讀
    <b class='flag-5'>OpenHarmony</b>城市技術(shù)論壇——<b class='flag-5'>第</b>6<b class='flag-5'>期</b>(武漢站)圓滿舉辦

    第二屆大會回顧6 | OpenHarmony游戲生態(tài)建設(shè)

    Turbo黑科技核心成員,在OpenHarmony社區(qū)上擔(dān)任開源圖形驅(qū)動SIG、游戲SIG、兼容性工作組組長等職務(wù)。 視頻回顧 ? 打開嗶哩嗶哩APP,觀看更清晰視頻 正文內(nèi)容 游戲作為一種大眾娛樂方式越來越被人們所接受,影響著人們的日常生活。大部分手機(jī)、平板、電腦甚至
    的頭像 發(fā)表于 12-26 08:36 ?315次閱讀
    第二屆大會<b class='flag-5'>回顧</b><b class='flag-5'>第</b>6<b class='flag-5'>期</b> | <b class='flag-5'>OpenHarmony</b>游戲生態(tài)建設(shè)

    第二屆大會回顧2 | 視覺大模型在OpenHarmony的端邊側(cè)應(yīng)用

    演講嘉賓 | 張兆生 回顧整理 | 廖? ?濤 排版校對 | 李萍萍 嘉賓介紹 ?OS原生智能分論壇? 張兆生 ,OpenHarmony項目群技術(shù)指導(dǎo)委員會委員、中軟國際智能物聯(lián)網(wǎng)軍團(tuán)產(chǎn)品與研發(fā)管理
    的頭像 發(fā)表于 12-12 14:30 ?645次閱讀

    羅姆(ROHM)4代:技術(shù)回顧

    羅姆(ROHM)4代:技術(shù)回顧
    的頭像 發(fā)表于 11-28 17:02 ?619次閱讀
    羅姆(ROHM)<b class='flag-5'>第</b>4代:技術(shù)<b class='flag-5'>回顧</b>

    高能回顧 | 首屆OpenHarmony競賽訓(xùn)練營精彩瞬間

    點擊視頻回顧競賽精彩瞬間! ↓↓↓ 根深葉茂,眾行者遠(yuǎn),期待下一次相聚! 原文標(biāo)題:高能回顧 | 首屆OpenHarmony競賽
    的頭像 發(fā)表于 11-11 21:10 ?395次閱讀

    限量門票!第二屆開放原子開源基金會OpenHarmony技術(shù)峰會報名開啟~

    報名通道:>>立即報名 峰會時間:11月4日 峰會地址:北京市 朝陽區(qū) 國家會議中心 第二屆開放原子開源基金會OpenHarmony技術(shù)峰會將于2023年11月4日在
    發(fā)表于 10-20 14:18

    報名開啟!第二屆開放原子開源基金會OpenHarmony技術(shù)峰會來啦~

    第二屆開放原子開源基金會OpenHarmony技術(shù)峰會將于2023年11月4日在北京舉辦。峰會以“技術(shù)筑生態(tài),智聯(lián)贏未來”為主題,特邀全球開源操作系統(tǒng)技術(shù)領(lǐng)袖、前沿實踐專家及高校技術(shù)導(dǎo)師,面向全球
    發(fā)表于 10-20 12:06

    峰會回顧32 | OpenHarmony在高校教學(xué)科研中的應(yīng)用

    演講嘉賓 | 陳? ?曦 回顧整理 | 廖? ?濤 排版校對 | 李萍萍 嘉賓簡介 陳曦,天津大學(xué)電氣自動化與信息工程學(xué)院副教授。長期從事人工智能、物聯(lián)網(wǎng)、電力系統(tǒng)相關(guān)教學(xué)和科研工作。主持和參與
    的頭像 發(fā)表于 10-10 10:27 ?844次閱讀
    <b class='flag-5'>峰會</b><b class='flag-5'>回顧</b><b class='flag-5'>第</b>32<b class='flag-5'>期</b> | <b class='flag-5'>OpenHarmony</b>在高校教學(xué)科研中的應(yīng)用

    直播預(yù)告 | 【OpenHarmony競賽訓(xùn)練營】線上賦能直播2——三方庫賽題解讀

    OpenHarmony競賽訓(xùn)練營】線上賦能直播2來了! 本期主題:OpenHarmony競賽訓(xùn)練營三方庫賽題解讀 主講嘉賓:馬迪欣 時間:2023年10月9日 1500 Comp
    的頭像 發(fā)表于 10-10 10:26 ?366次閱讀
    直播預(yù)告 | 【<b class='flag-5'>OpenHarmony</b>競賽訓(xùn)練營】線上賦能直播<b class='flag-5'>第</b>2<b class='flag-5'>期</b>——三方庫賽題解讀