HarmonyOS中调用C/C++代码(NDK)的准备知识

 介绍

NDK(Native Development Kit)是HarmonyOS SDK提供的Native API、相应编译脚本和编译工具链的集合,方便开发者使用C或C++语言实现应用的关键功能。NDK只覆盖了HarmonyOS一些基础的底层能力,如C运行时基础库libc、图形库、窗口系统、多媒体、压缩库、面向ArkTS/JS与C跨语言的Node-API等,并没有提供ArkTS/JS API的完整能力。

运行态,开发者可以使用NDK中的Node-API接口,访问、创建、操作JS对象;也允许JS对象使用Native动态库。

NDK适用场景

适合使用NDK的场景:应用涉及如下场景时,适合采用NDK开发

  • 性能敏感的场景,如游戏、物理模拟等计算密集型场景。

  • 需要复用已有C或C++库的场景。

  • 需要针对CPU特性进行专项定制库的场景,如Neon加速。

不建议使用NDK的场景:应用涉及如下场景时,不建议采用NDK开发

  • 纯C或C++的应用。

  • 希望在尽可能多的HarmonyOS设备上保持兼容的应用。

NDK必备基础知识 

为顺利进行NDK开发,开发者需要先掌握必要的基本概念及基础知识。

NDK基本概念

  • Node-API

    曾用名NAPI,是HarmonyOS中提供ArkTS/JS与C/C++跨语言调用的接口,是NDK接口中的一部分。该接口是在Node.js提供的Node-API基础上扩展而来,但与Node.js中的Node-API不完全兼容。

  • C API

    HarmonyOS NDK的曾用名,不再使用。

前置知识

  • Linux C语言编程知识

    内核、libc基础库基于POSIX等标准扩展而来,掌握基本的Linux C编程知识能够更好的帮助理解HarmonyOS NDK开发。

  • CMake使用知识

    CMake是HarmonyOS默认支持的构建系统。请先通过CMake官方文档了解基础用法。

  • Node Addons开发知识

    ArkTS采用Node-API作为跨语言调用接口,熟悉基本的Node Addons开发模式,可以更好理解NDK中Node-API的使用。

  • Clang/LLVM编译器使用知识

    具备一定的Clang/LLVM编译器基础知识,能够帮助开发者编译出更优的Native动态库。

 

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).

NDK常用模块

下表介绍了NDK的常用模块。

编辑

NDK的组成架构

编辑

第一层

应用侧:ArkTS Native Module

开发者使用Node-API开发的模块,用于在ArkTS侧导入使用

第二层

NDK的功能模块(Framework)包含了

Node-API:实现ArkTS与C/C++交互的逻辑

ModuleManager:Native模块管理,包括加载、查找等 ScopeManager:管理napi_value的生命周期

ReferenceManager:管理napi_ref的生命周期

第三层

ArkCompiler ArkTS Runtime:ArkTS(方舟)运行时

这个Native Engine其实就是对JS引擎做了一层封装,主要是统一JS引擎在NDK层的接口行为,NDK就不感知js引擎的差异

Node-API的关键交互流程

编辑

ArkTS和C++之间的交互流程,主要分为以下两步:

  1. 初始化阶段:当ArkTS侧在import一个Native模块时,ArkTS引擎会调用ModuleManager加载模块对应的so及其依赖。首次加载时会触发模块的注册,将模块定义的方法属性挂载到exports对象上并返回该对象。

  2. 调用阶段:当ArkTS侧通过上述import返回的对象调用方法时,ArkTS引擎会找到并调用对应的C/C++方法。

资料参考来源  鸿蒙开发者文档

需要参加鸿蒙认证的请点击 鸿蒙认证链接

posted @ 2025-08-10 13:00  大雷神  阅读(73)  评论(0)    收藏  举报