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