本文來源電子發(fā)燒友社區(qū),作者:ALSET, 帖子地址:https://bbs.elecfans.com/jishu_2307110_1_1.html
開源鴻蒙C_C++應用開發(fā)(體驗視頻詳見原帖子)
鴻湖萬聯揚帆系列“競”開發(fā)板試用測評報告五 –開源鴻蒙C/C++軟件開發(fā)
大信(QQ:8125036)
在成功的建立了開源鴻蒙的集成開發(fā)環(huán)境以后,已經了解了鴻蒙一般的應用開發(fā)的流程和開發(fā)工具軟件。基本上開發(fā)所需要的所有操作都在它的集成開發(fā)環(huán)境中完成,即在DevEco Studio 中完成,而DevEco Studio 集成開發(fā)環(huán)境功能強大,集代碼的編輯,編譯,軟件資源的管理,預處理以及,UI設計預覽等于一體,還集合了SDK,模擬器以及設備管理,下載器等功能。
這個集成開發(fā)環(huán)境從安裝過程可以看到它直接支持js和c/c++兩種語言來開發(fā)鴻蒙應用,支持ejs和html方式來設計UI,這個對一般信息類的服務應用用來說已經完全滿足各種行業(yè)的應用需求。比如開發(fā)個商城、點餐、買菜啥的大眾服務類APP,哈哈。并且開發(fā)簡單,門檻低,預計以后在支持鴻蒙設備普及后,這類應用將極大的豐富。
但對于一個稍微有上進心的硬核開發(fā)者來說,顯然不滿足于用js和html來寫個買菜之類的APP,我們有必要更深入的了解系統(tǒng)的原理以及程序運行框架,以及系統(tǒng)相關接口,以便能夠基于系統(tǒng)層開發(fā)一些擴展模塊,以及支持更多的外部硬件驅動,或者開發(fā)通訊應用、多媒體應用等系統(tǒng)級開發(fā)作為小目標。
首先閱讀官方提供的開發(fā)文檔《軟通動力揚帆競系列開發(fā)板軟件開發(fā)環(huán)境搭建指導手冊最終版v2.0》。按文檔的說明,前一章已經安裝軟件工具列表,這里就按照之前的操作步驟開始探索系統(tǒng)層面的開發(fā)。這里依然用一下鴻蒙的系統(tǒng)架構圖,因為它是了解整體全貌的基礎。

圖1 OpenHarmony 整體技術架構
為了更好的研究和學習Openharmony 系統(tǒng),首先做一下資料的收集和調查,基本上搜索了一圈后,找到幾個比較好的網站,這里簡單的給列出一下,也方便同樣學習的童靴們參考:
https://growing.openharmony.cn/mainPlay/learnPath
這個網站是OpenHarmony官網的學習板塊主頁面,可以了解到Openharmony整體的概貌,以及OpenHarmony的相應的領域以及對應的學習路線路圖,這里可以看到 OpenHarmony支持三類設備,輕量系統(tǒng),小型系統(tǒng),標準系統(tǒng)。開發(fā)角色分為系統(tǒng)開發(fā)者和應用開發(fā)者,難度則對應了初中高三個級別。從頁面介紹的系統(tǒng)看,有很多硬件支持Openharmony 了,但里面沒有找到鴻湖萬聯揚帆系列“競”開發(fā)板,但從其主處理器看,應該屬于標準系統(tǒng),因此可以參照 OpenHarmony標準系統(tǒng)應用開發(fā),九聯Unionpitiger開發(fā)板標準系統(tǒng),潤和RK3568開發(fā)板標準系統(tǒng),OpenHarmony硬件開發(fā)環(huán)境搭建DevEco Device Tool,OpenHarmony多媒體子系統(tǒng)介紹,這幾個板塊的內容。這些內容有很多帶有視頻,學習起來很方便。
https://gitee.com/openharmony/docs
這個網址站是OpenHarmony的碼云Gitee代碼倉庫里的文檔庫地址。這里面就是面對開發(fā)者的文檔了,OpenHarmony 所有的主線板本以及分支版本,各個基線版本都在這個倉庫,因此它是開發(fā)者特別是系統(tǒng)開發(fā)者常常光顧的地方,同樣這里的文檔庫不用說了,都是跟開發(fā)密切相關的資料了,所有代碼的變更以及報告的問題,問題的解決過程都在這里面了,文檔量已經非常大了,不過有一個好消息是,所有問題都是中文的,文字閱讀不會有障礙。不好的消息是,對于看慣英文文檔的開發(fā)者來說,這可能得習慣一下,很多技術定義以及術語的使用不夠準確規(guī)范,不過也有英文版本,哈哈。系統(tǒng)層的很多接口調用的說明都在這個文檔庫里了。
這個倉庫里代碼對應就是當前OpenHarmony最新的版本,嘗鮮的小朋友可以隨時拉下來編譯一個運行。而且遇到問題,隨時可以進入源碼層去看發(fā)生了什么,不爽的話,順手可以修改一下。感覺是不是很爽? 那就開發(fā)愉快!
https://toscode.gitee.com/explore/harmony
這個網址就是基于OpenHarmony各種組件,應用,模塊的開源項目地址了,這里面既有很多應用軟件,也有很多基礎的組件,用于擴展標準系統(tǒng)的軟件,比如用戶的HTTP通訊組件,自定義UI控件等,也有其它不同硬件上的鴻蒙開發(fā)資源,以及一些資料的大集合。也有各種移植的技術帖子,五花八門,專解決各種疑難雜癥。去這里面轉轉,很容易找到一些開發(fā)資料,有文字、視頻,也有別人開發(fā)好的模塊代碼,減少重復造車輪的事發(fā)生。
資料比較集中的就在上面幾個地址里,其它的博客文章,這里就不一一列舉了,各個博客文章記錄很多為解決專項問題的方案,當遇到問題時,搜索一下就可以找到。想要快速了解OpenHarmony的技術整體知識,系統(tǒng)的閱讀相關資料是最快的方法。
下面的開發(fā)試驗過程都基于這個主機環(huán)境,開發(fā)環(huán)境配置介紹:
Windwos環(huán)境供開發(fā)者參考:
內存:16G
硬盤:1T
操作系統(tǒng):Win10, Vmware 15 Player
因為該開發(fā)板沒有提供其系統(tǒng)Openharmony 的源碼資料,因此還不能使用系統(tǒng)的開發(fā)方式進行打包開發(fā)。按Openharmony開源社區(qū)的技術資料,在一些硬件上,可以從其源碼構建整體系統(tǒng)。鴻蒙提供了整個系統(tǒng)的源碼,每個硬件開發(fā)板,只要按鴻蒙系統(tǒng)的BSP接口完成硬件驅動的對接,就可以使得鴻蒙運行到特定的硬件上。
因此對于不同的硬件開發(fā)板,只要了解其硬件系統(tǒng)的設備驅動,進行開發(fā)適配層,即可完成鴻蒙系統(tǒng)在其板上的運行。
同時,在DevEco Studio里也提供了C/C++的開發(fā)模式的支持,可以看出,這種模式是采用的與硬件無關的一種平臺開發(fā)方式,這里的通過鴻蒙對外提供的統(tǒng)一的API接口,屏蔽了各個硬件細節(jié)的差異,從而是開發(fā)者不必關心硬件的差異,而進行系統(tǒng)的開發(fā)。從其原理可以,這種方式是基于鴻蒙的API接口進行開發(fā),處于應用層,因此從系統(tǒng)應用管理來講,它更像Android 的Native 模式的開發(fā),用于提高應用軟件運行效率以及一些音視頻多媒體應用開發(fā)的場合,而為底層增加特定功能模塊,擴展功能等就受到了框架的一定約束。
打開DevEco集成開發(fā)軟件,就可以創(chuàng)建c/c++的應用程序,線了解一下在應用層c/c++開發(fā)的模式以及可調傭的SDK。打開DevEco Studio,選擇創(chuàng)建應用,如下圖:

圖2 創(chuàng)建新應用
下一步選擇平臺,同樣選擇 OpenHarmony, 模板選擇Navite C/C++

圖3 選擇C/C++模板
選擇好平臺模板后,就填寫一些應用的參數信息,名稱,項目路徑,語言等,因為應用程序是有界面的,因此這里界面可以選擇ejs或者js, 這里就選擇 ejs 模板了。

圖4 設置項目信息
在點擊完成時,會出現下面的提示,可以看到是提示下載SDK,看來C/C++和js開發(fā)用的是不同的SDK和工具,按提示開始下載。

圖5 提示缺少Native開發(fā)SDK
組件有600M,還好服務器在華為云上,因此下載速度很快,相比Android下載SDK,必須去海外的google上下載,那體驗相比好多了。

圖6 下載少Native開發(fā)SDK
下載完成就來到了代碼編輯開發(fā)界面,如下圖:

圖7 C/C++代碼編輯開發(fā)界面
從代碼的一些定義可以看出,這個是Nodejs 的NAPI的規(guī)范調用,所以驗證了,Harmony系統(tǒng)主要運行的是Nodejs的KVM 執(zhí)行機,所有應用都有Nodejs來解釋執(zhí)行。
也可以切換到UI編輯界面可以看到現在Hello,world的UI設計,這里依然是Ejs的界面描述語言,還是很好理解,這里稍微改一下,界面加上對C++的問候, 以及對C/C++接口的調用,把執(zhí)行的結果返回到界面上。

圖8 UI 界面設計編輯開發(fā)
做完開發(fā)后,點擊build里的編譯,很快幾步提示,編譯成功。編譯應用開發(fā)就這么簡單。

圖9 編譯打包hap
同樣編譯完,開發(fā)打包,生成可以下載開發(fā)板的app軟件,同樣在build界面上,和之前的JS 開發(fā)過程一樣,點擊構建安裝包,就開始進行打包工作。
首次打開會彈出一個安全證書請求的要求,原來鴻蒙的應用都需要CA簽名,按提示說明,填入相關的信息,進行證書的制作。這一步看著填的東西很多,其實很簡單,按文檔或者網上的教程照做,簡單幾步就可以過去了。

圖10 創(chuàng)建簽名證書

圖11 生成設備請求書
在簡單測試開發(fā),并不需要正式發(fā)布時,也可以使用自動簽名,方式是,點擊:File-> Project Struct-> Project -> Signing Config 勾選自動簽名即可。這里還可以把應用運行的調用安全聲明開關打開,因為高級應用一般設計到系統(tǒng)敏感系統(tǒng)如網絡,存儲,相機,短信等的訪問,而這些都需要授權許可。

圖12 測試應用自動簽名
獲取完證書,就可以打包生成可以下載的APP了,回到開發(fā)界面,在右上角設備列表里,會出現開發(fā)板的ID,如果沒有在下拉列表里會有,選擇上即可以,然后點右側的“運行”,即自動的安裝運行,板上運行效果如下圖:

圖13 測試應用板上運行
這里的應用程序代碼如下,在UI層,即eTS 界面里,代碼是按eJS規(guī)范編寫,其邏輯語法與js一致,在其界面中引入C/C++的模塊,可見這里c/c++被編譯成一個動態(tài)庫。
importtestNapifrom'libentry.so'
在界面里直接調用動態(tài)庫對外的方法, 動態(tài)庫的實例這里是testNapi , 它的方法就是c/c++里定義的對js調用的接口 add, 調用方式如下:

CPP代碼里則定義了一個Napi的模塊以及標準接口,這個接口就是nodejs 與c++ 之間的規(guī)范,也就個接口使得js可以調用我們自己開發(fā)的 c/c++代碼了。這里接口定義了一個add , 在c++里,完成從js里輸入參數,轉換成c/c++的變量類型,同時按成兩個數據的相加,然后再返回js的數據類型,具體c/c++代碼實現的入口函數為:
napi_value function(napi_env env,napi_callback_info info)
這里面就可以加入我們自己實現的邏輯,其中env 是nodejs 的環(huán)境變量,當我們需要跟外部js進行數據交換時,就通過它完成, 為了使用N-API提供的接口及類型定義,我們需要引入node_api.h頭文件。使用N-API定義的方法需要滿足napi_callback類型,其定義為:
typedef napi_value (*napi_callback)(napi_envenv, napi_callback_info info);
napi_callback是使用N-API開發(fā)的Native函數的函數指針類型,其接受類型分別為napi_env以及napi_callback_info的兩個參數,并返回類型為napi_value的值。greeting方法中涉及到的幾個類型定義及其用途如下:
napi_value類型是一個用于表示Javascript值的指針
napi_env 類型用于存儲Javascript虛擬機的上下文
napi_callback_info 類型用于調用回調函數時,傳遞調用時的上下文信息
我們定義的Add方法如下:

而對js模塊,對外可調用的具體接口代碼如下:

代碼可見是用到了Node.js Native模塊的規(guī)范,這個規(guī)范叫 N-API。N-API為開發(fā)者提供了一套C/C++ API用于開發(fā)Node.js的Native擴展模塊。從Node.js 8.0.0開始,N-API作為Node.js本身的一部分被引入,并且從Node.js 10.0.0開始正式全面支持N-API。更多關于NAPI的資料,可以查閱N-api的文檔即可。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。
舉報投訴
-
開源
+關注
關注
3文章
3533瀏覽量
43292 -
C++
+關注
關注
22文章
2116瀏覽量
74568 -
軟通動力
+關注
關注
1文章
928瀏覽量
15442 -
鴻湖萬聯
+關注
關注
1文章
82瀏覽量
771
發(fā)布評論請先 登錄
相關推薦
軟通動力攜手鴻湖萬聯亮相2025武漢鴻蒙產業(yè)發(fā)展交流會
近日,以“鴻蒙生態(tài) 共筑未來”為主題的2025武漢鴻蒙產業(yè)發(fā)展交流會在武漢圓滿舉行。本次活動聚焦產業(yè)政策發(fā)布及鴻蒙生態(tài)與區(qū)域產業(yè)的深度融合,吸引了政產學研用等多方力量參會。作為鴻蒙生態(tài)
微展世與鴻湖萬聯攜手發(fā)布WeOS開源鴻蒙工業(yè)操作系統(tǒng)
近日,微展世(北京)數字科技有限公司(簡稱“微展世”)在北京隆重舉辦了2025年度的產品發(fā)布與戰(zhàn)略簽約盛會。此次盛會中,微展世的重要戰(zhàn)略合作伙伴——軟通動力及其子公司鴻湖
軟通動力攜鴻湖萬聯與微展世簽署戰(zhàn)略合作協(xié)議,以開源鴻蒙賦能工業(yè)創(chuàng)新升級
1月7日,軟通動力攜子公司鴻湖萬聯,與微展世(北京)數字科技有限公司(簡稱“微展世”)在廣州簽署

軟通動力攜鴻湖萬聯與微展世簽署戰(zhàn)略合作協(xié)議
近日,軟通動力攜子公司鴻湖萬聯,與微展世(北京)數字科技有限公司(簡稱“微展世”)在廣州簽署戰(zhàn)略
軟通動力子公司鴻湖萬聯助陣鴻蒙1024程序員節(jié)成功舉辦
10月24日,在武漢、成都、深圳等地政府指導下,鴻蒙生態(tài)服務公司舉辦了一場面向廣大開發(fā)者的盛會——鴻蒙1024程序員節(jié)暨鴻蒙原生應用交流會。軟

軟通動力子公司鴻湖萬聯發(fā)布SwanLinkOS 5
在近日圓滿閉幕的首屆H?I3 AI探索峰會上,軟通動力憑借其深厚的技術實力與創(chuàng)新精神,在鴻蒙生態(tài)領域再次邁出堅實步伐。會上,軟通動力攜手子公
軟通動力子公司鴻湖萬聯重磅發(fā)布SwanLinkOS 5,擘畫開源鴻蒙AI PC新篇章
在剛剛落下帷幕的首屆H?I3AI探索峰會上,軟通動力再次于鴻蒙生態(tài)領域實現突破。此次活動中,軟通動力高級副總裁、

軟通動力子公司鴻湖萬聯攜多款重磅創(chuàng)新產品亮相華為開發(fā)者大會
如何引領行業(yè)進步,共同探索鴻蒙生態(tài)與AI大模型的發(fā)展新契機。作為本次大會鉆石級合作伙伴,軟通動力攜子公司鴻湖

評論