Napi_generator(一)—NAPI框架生成工具介
??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??
??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??
前言
對(duì)于南向設(shè)備開(kāi)發(fā)者進(jìn)行OpenHarmony 標(biāo)準(zhǔn)系統(tǒng)應(yīng)用開(kāi)發(fā)來(lái)說(shuō),在進(jìn)行設(shè)備開(kāi)發(fā)的過(guò)程中,難免要與北向應(yīng)用層打交道,為北向應(yīng)用開(kāi)發(fā)提供一些硬件控制的接口,這是就需南向開(kāi)發(fā)者學(xué)習(xí)OpenHarmony提供的NAPI機(jī)制,而這又需要開(kāi)發(fā)者了解JS/eTS的一些知識(shí),關(guān)注Nodejs語(yǔ)法、C++與JS之間的數(shù)據(jù)類型轉(zhuǎn)換等上層應(yīng)用轉(zhuǎn)換邏輯,通過(guò)了這幾天的學(xué)習(xí)也發(fā)現(xiàn)學(xué)習(xí)和使用NAPI確實(shí)要耗費(fèi)挺大的精力。
在學(xué)習(xí)NAPI框架的過(guò)程中,偶然間在源碼下napi_generator目錄發(fā)現(xiàn)這么一款好用的工具,簡(jiǎn)直是南向開(kāi)發(fā)者的福音,通過(guò)NAPI框架生成工具,使用者可輸入一個(gè)接口定義的ts文件,一鍵生成NAPI框架代碼、業(yè)務(wù)代碼框架、GN腳本等文件,并使用生成的NAPI接口及功能。使用者也可以輸入一個(gè)定義方法的.h頭文件,反向生成ts文件。這讓開(kāi)發(fā)者只關(guān)注底層業(yè)務(wù)邏輯即可,專業(yè)的人做專業(yè)的事,從而可以大大提高開(kāi)發(fā)效率,下面先介紹一下這款工具的安裝和使用教程。
參考資料
本工具由深開(kāi)鴻公司開(kāi)發(fā),這里也感謝將這么一款好用的工具開(kāi)源,本篇對(duì)于工具的詳細(xì)使用,也大多出自文檔,可以參考napi_generator倉(cāng)庫(kù):
??NAPI框架生成工具使用說(shuō)明——作者:深圳開(kāi)鴻數(shù)字產(chǎn)業(yè)發(fā)展有限公司??對(duì)于NAPI機(jī)制,已經(jīng)有許多博主介紹得很詳細(xì)了,不懂的童鞋可以先了解下:
NAPI組件倉(cāng)庫(kù)
基于OpenHarmony Native Api框架實(shí)現(xiàn)控制LED燈亮滅。
三方庫(kù)移植之NAPI開(kāi)發(fā)[1]—Hello OpenHarmony NAPI。
OpenHarmony 源碼解析之JavaScript API框架(NAPI)。
標(biāo)準(zhǔn)設(shè)備應(yīng)用開(kāi)發(fā)—Native Api-開(kāi)源基礎(chǔ)軟件社區(qū)-51CTO.COM。
使用環(huán)境
- OpenHarmony-3.2-Beta5
- 九聯(lián)UnionPi-Tiger開(kāi)發(fā)板
- Visual Studio Code(版本需1.62.0及以上)
工具簡(jiǎn)介及下載
NAPI框架代碼生成工具,它可以根據(jù)用戶指定路徑下的ts(typescript)接口文件一鍵生成NAPI框架代碼、業(yè)務(wù)代碼框架、GN文件等。NAPI框架生成工具支持三種入口,分別是可執(zhí)行程序、VS Code插件、IntelliJ插件,使用者可以根據(jù)自己的需要選擇合適的工具,本人IntelliJ插件沒(méi)嘗試過(guò),主要介紹一下可執(zhí)行程序以及VS code 插件的使用,這兩者也會(huì)比較常用一點(diǎn)。
可執(zhí)行文件、IntelliJ插件、VS Code插件下載路徑如下:
http://ftp.kaihong.com:5000/fsdownload/PC6uOorrM/NAPI。
下載文件說(shuō)明:
使用方法
一、預(yù)檢查
napi_generator的可執(zhí)行程序方式和插件方式都具有預(yù)檢查的功能,如果.d.ts文件中存在語(yǔ)法錯(cuò)誤,那么執(zhí)行的時(shí)候命令行會(huì)打印出錯(cuò)誤信息,指出代碼中存在錯(cuò)誤的行號(hào)。使用效果如下:
二、生成框架
通過(guò)可執(zhí)行程序生成(Linux環(huán)境下)
- 首先準(zhǔn)備待轉(zhuǎn)換的.d.ts文件,這里選擇napi_generator/examples/ts下的@ohos.napitest.d.ts文件進(jìn)行測(cè)試。若.d.ts文件中聲明了basic.d.ts文件,將basic.d.ts文件放置在待轉(zhuǎn)換.d.ts文件上一級(jí)目錄;若除此之外還聲明其它.d.ts文件,將此類文件放置在待轉(zhuǎn)換.d.ts文件同級(jí)目錄。
此處在example下新建out文件夾,用于存放生成框架代碼。
- 運(yùn)行napi_generator-linux,命令如下(~/tools/napi_generator-linux根據(jù)自己的下載位置更改):
其中,參數(shù)詳情如下: -f, 待轉(zhuǎn)換的.d.ts文件,若同時(shí)轉(zhuǎn)換多個(gè)文件,文件之間用“,”隔開(kāi); -d, 根據(jù)指定路徑轉(zhuǎn)換該文件夾中所有.d.ts文件; -i, 可選參數(shù),默認(rèn)false,待轉(zhuǎn)換.d.ts文件中引用非basic.d.ts的ts文件時(shí)打開(kāi)開(kāi)關(guān); -o, 可選參數(shù),默認(rèn)為當(dāng)前目錄,指定生成框架代碼輸出路徑; -n, 可選參數(shù),默認(rèn)為uint32_t,指定生成框架代碼中number類型全部為指定類型。
備注:-f與-d兩個(gè)參數(shù)只選其中一個(gè)參數(shù)即可。
- 運(yùn)行成功后會(huì)在out目錄下生成框架代碼文件,如下所示:
Windows 上的方法與Linux上的類似,可以自行參考倉(cāng)庫(kù)教程進(jìn)行嘗試。
通過(guò)VS code插件生成
打開(kāi)VS code,在左側(cè)邊欄中選擇插件,點(diǎn)擊右上角的三個(gè)小圓點(diǎn),選擇從VISI安裝,注意如果代碼在遠(yuǎn)程服務(wù)器的話要將插件文件下載到服務(wù)器上,選擇在服務(wù)器進(jìn)行安裝。
選擇剛才下載的gnapi-0.0.1.vsix插件文件,再單擊確定進(jìn)行安裝。
安裝完成后就會(huì)在VS Code的插件管理器中能看到gnapi這個(gè)插件了。
選擇需要轉(zhuǎn)換的.d.ts文件,若.d.ts文件中聲明了basic.d.ts文件,將basic.d.ts文件放置在待轉(zhuǎn)換.d.ts文件上一級(jí)目錄;若除此之外還聲明其它.d.ts文件,將此類文件放置在待轉(zhuǎn)換.d.ts文件同級(jí)目錄。例如napi_generator下的一個(gè)exampl,位于napi_generator/examples/ts/@ohos.napitest.d.ts下,右鍵文件選擇Generate Napi Frame。
工具彈出Generate Napi Frame彈窗,選擇Napi-Gen頁(yè)簽。接口文件文本框填寫.d.ts文件路徑;生成框架路徑文本框填寫生成框架存放路徑(這里我在example下新建了out目錄);編譯腳本路徑默認(rèn)填寫;number目的類型此處選擇float,表示指定生成框架代碼中number類型全部為float類型。;啟用import功能不選擇(待轉(zhuǎn)換.d.ts文件未引用其它文件);點(diǎn)擊ok。
執(zhí)行結(jié)束后會(huì)在out目錄下生成框架代碼文件。
三、生成文件總結(jié)
- napitest.cpp:生成的napitest.cpp文件中的接口即為.d.ts文件中定義的接口,開(kāi)發(fā)者只需要使用C/C++實(shí)現(xiàn)對(duì)于的接口功能即可。
- BUILD.gn: GN腳本,需要注意一點(diǎn)就是生成的BUILD.gn文件中的ace_napi路徑位置可能不準(zhǔn)確,需根據(jù)自己的OpenHarmony進(jìn)行修改,以及所屬子系統(tǒng),組件等,根據(jù)自己需要進(jìn)行配置。
- napitest_middle,tool_utility :NAPI中間文件,包括NAPI模塊定義,模塊注冊(cè),接口工具都存放在里面。
- napi_gen.log: 生成過(guò)程日志、
后記
本篇簡(jiǎn)單介紹了一下工具的安裝和使用,后面一篇文章將會(huì)用實(shí)例進(jìn)行演示。
??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??