NDK(Native Development Kit)是OpenHarmony SDK提供的Native API卒蘸、相應編譯腳本和編譯工具鏈的集合署恍,方便開發(fā)者使用C或C++語言實現(xiàn)應用的關鍵功能。NDK只覆蓋了OpenHarmony一些基礎的底層能力凳怨,如C運行時基礎庫libc绪囱、圖形庫、窗口系統(tǒng)冒滩、多媒體、壓縮庫浪谴、面向ArkTS/JS與C跨語言的Node-API等开睡,并沒有提供ArkTS/JS API的完整能力。
運行態(tài)苟耻,開發(fā)者可以使用NDK中的Node-API接口篇恒,訪問、創(chuàng)建凶杖、操作JS對象胁艰;也允許JS對象使用Native動態(tài)庫。
NDK適用場景
適合使用NDK的場景:應用涉及如下場景時智蝠,適合采用NDK開發(fā)
- 性能敏感的場景腾么,如游戲、物理模擬等計算密集型場景杈湾。
- 需要復用已有C或C++庫的場景解虱。
- 需要針對CPU特性進行專項定制庫的場景,如Neon加速漆撞。
不建議使用NDK的場景:應用涉及如下場景時殴泰,不建議采用NDK開發(fā)
- 純C或C++的應用。
- 希望在盡可能多的OpenHarmony設備上保持兼容的應用浮驳。
NDK必備基礎知識
為順利進行NDK開發(fā)悍汛,開發(fā)者需要先掌握必要的基本概念及基礎知識。
NDK基本概念
- Node-API
曾用名NAPI至会,是OpenHarmony中提供ArkTS/JS與C/C++跨語言調用的接口离咐,是NDK接口中的一部分。該接口是在Node.js提供的Node-API基礎上擴展而來奉件,但與Node.js中的Node-API不完全兼容宵蛀。
- C API
OpenHarmony NDK的曾用名,不再使用瓶蚂。
前置知識
- Linux C語言編程知識 內(nèi)核糖埋、libc基礎庫基于POSIX等標準擴展而來,掌握基本的Linux C編程知識能夠更好的幫助理解OpenHarmony NDK開發(fā)窃这。
- CMake使用知識 CMake是OpenHarmony默認支持的構建系統(tǒng)瞳别。請先通過[CMake官方文檔] 了解基礎用法。
- Node Addons開發(fā)知識 ArkTS采用Node-API作為跨語言調用接口杭攻,熟悉基本的[Node Addons開發(fā)模式]祟敛,可以更好理解NDK中Node-API的使用。
- Clang/LLVM編譯器使用知識 具備一定的Clang/LLVM編譯器基礎知識兆解,能夠幫助開發(fā)者編譯出更優(yōu)的Native動態(tài)庫馆铁。
NDK目錄簡介
- build目錄:放置預定義的toolchain腳本文件ohos.toolchain.cmake
CMake編譯時需要讀取該文件中的默認值,比如編譯器架構锅睛、C++庫鏈接方式等埠巨,因此在編譯時會通過CMAKE_TOOLCHAIN_FILE指出該文件的路徑历谍,便于CMake在編譯時定位到該文件。
- build-tools文件夾:放置NDK提供的編譯工具
# 鍵入下一行命令查看CMake的版本
cmake -version
# 結果
cmake version 3.16.5
CMake suite maintained and supported by Kitware (kitware.com/cmake).
- llvm文件夾:放置NDK提供的編譯器
NDK常用模塊
下表介紹了NDK的常用模塊辣垒。
模塊 | 模塊簡介 |
---|---|
標準C庫 | 以musl為基礎提供的標準C庫接口望侈。 |
標準C++庫 | C++運行時庫libc++_shared。 |
日志 | 打印日志到系統(tǒng)的HiLog接口勋桶。 |
Node-API | 當需要實現(xiàn)ArkTS/JS和C/C++之間的交互時脱衙,可以使用Node-API。 |
libuv | 三方異步IO庫例驹。 |
zlib | zlib庫捐韩,提供基本的數(shù)據(jù)壓縮、解壓接口鹃锈。 |
Rawfile | 應用資源訪問接口荤胁,可以讀取應用中打包的各種資源。 |
XComponent | ArkUI XComponent組件提供surface與觸屏事件等接口仪召,方便開發(fā)者開發(fā)高性能圖形應用寨蹋。 |
Drawing | 系統(tǒng)提供的2D圖形庫,可以在surface進行繪制扔茅。 |
OpenGL | 系統(tǒng)提供的OpenGL 3D圖形接口已旧。 |
OpenSL ES | 用于2D、3D音頻加速的接口庫召娜。 |
寫在最后
- 如果你覺得這篇內(nèi)容對你還蠻有幫助运褪,我想邀請你幫我三個小忙:
- 點贊,轉發(fā)玖瘸,有你們的 『點贊和評論』秸讹,才是我創(chuàng)造的動力。
- 關注小編雅倒,同時可以期待后續(xù)文章ing??璃诀,不定期分享原創(chuàng)知識。
- 想要獲取更多完整鴻蒙最新學習知識點蔑匣,請移步前往小編:
https://gitee.com/MNxiaona/733GH/blob/master/jianshu