三方庫移植之NAPI開發(三)通過IDE開發NAPI工程
- 在三方庫移植之NAPI開發[1]—Hello OpenHarmony NAPI一文中,筆者開發的是一個rom包的napi工程。該工程需要編譯燒錄固件,C ++的動態庫會集成到開發板的ROM中。
- 在本篇文章中,筆者使用三方庫移植之NAPI開發[1]—Hello OpenHarmony NAPI中一樣的hellonapi.cpp和index.ets源碼,通過IDE開發一個RAM包的NAPI工程(集成C ++的動態庫到開發板的RAM中),直接編譯安裝hap包到開發板即可。兩個開發方式的hap包運行效果一致。
開發環境:
- IDE:??DevEco Studio 3.0 Release??
- 開發板:潤和DAYU200開發板
創建工程
打開IDE,創建一個Native C++工程。
SDK選擇API9,model選擇Stage。
源碼實現
- 新建的Native C++工程有一個默認的hello world教程,接下來需要編輯的文件如下:
C++方法實現
將默認的hello.cpp文件重命名為hellonapi.cpp,選中右鍵選中重構重命名。
hellonapi.cpp內容如下:
此時的native_api.h文件是在sdk\native\3.2.7.5\sysroot\usr\include\napi目錄下。
CMakeLists.txt編譯配置文件編寫
- 和開發rom包的NAPI工程需要在BUILD.gn文件中指定編譯so庫需要的頭文件和源文件、動態庫名稱、依賴的庫一樣,通過IDE開發ROM包時也需要在CMakeLists.txt中指定編譯so庫需要的頭文件和源文件、動態庫名稱、依賴的庫,內容如下:
- NATIVERENDER_ROOT_PATH路徑指的是sdk\native\3.2.7.5\sysroot\usr
- add_library(hellonapi SHARED hellonapi.cpp)表示編譯libhellonapi.so需要的是hellonapi.cpp
- target_link_libraries(hellonapi PUBLIC libace_napi.z.so)表示編譯編譯libhellonapi.so依賴libace_napi.z.so
- 開發ROM包的NAPI工程時,libhellonapi.z.so也依賴libace_napi.z.so,以下為開發ROM包的NAPI工程時BUILD.gn文件
libhellonapi.so依賴的libace_napi.z.so在sdk\native\3.2.7.5\sysroot\usr\lib\aarch64-linux-ohos目錄下。
sdk\native\3.2.7.5\sysroot\usr\lib\arm-linux-ohos目錄下也有開發ROM包的NAPI時候可能依賴的動態庫。
index.d.ts聲明文件編寫
index.d.ts內容如下:
界面設計
index.ets和??三方庫移植之NAPI開發[1]—Hello OpenHarmony NAPI??一文中一致。
json配置文件編寫
- package.json內容如下:
- entry/package-lock.json內容如下:
- 有報錯就刪除原有的libentry.so符號鏈接。
- entry/package.json內容如下:
- 修改原有的libentry為libhellonapi
- 設置hap為自動簽名
hap包運行效果
和三方庫移植之NAPI開發[1]—Hello OpenHarmony NAPI一文效果一致。
總結:RAM包的NAPI工程和ROM包的NAPI工程的異同
以下為個人總結,希望各位老師和同學批評指正
- 動態庫的命名方式的不同,RAM包的NAPI工程(通過IDE開發NAPI工程)使用的動態庫libhellonapi.so,而ROM包的NAPI工程編譯出來使用的動態庫是libhellonapi.z.so。
- libhellonapi.so位于hap包源碼路徑如下:
- 開發ROM包的NAPI工程需要加入OHOS編譯體系,編寫BULID.gn、ohos.build等,開發過程較為繁瑣。而RAM包的NAPI工程不需要加入OHOS編譯體系,編寫CMakeLists.txt配置編譯需要的源文件、頭文件、依賴的庫等。因此開發RAM包的NAPI工程相對簡潔。
- .d.ts聲明文件的編寫不同
- 開發ROM包的NAPI工程時,筆者編寫的@ohos.hellonapi.d.ts內容為
- 開發RAM包的NAPI工程時,筆者編寫的@ohos.hellonapi.d.ts內容為:
知識點附送
- 以下為開發ROM包的NAPI工程時,需要添加進入sdk的聲明文件模板。
@ohos.模塊名.d.ts文件:
文章相關附件可以點擊下面的原文鏈接前往下載: