NAPI篇【1】——如何创建含NAPI的OpenHarmony工程

        笔者从事OpenHarmony的北向应用开发,关于NAPI的应用这里做一个笔记总结,包含NAPI的OpenHarmony工程的创建、cpp文件详解、如何编写NAPI函数等,都是基于笔者的开发经验和网上参考资料汇集而成,笔者也处于学习阶段,如有错误,欢迎指正。

一、NAPI的介绍

     1、简介

  NAPI,全称 Native API,是OpenHarmony系统中的一套原生模块拓展开发框架。基于Nodejs中的N-API开发,为开发者提供了JS与C/C++不同语言模块之间的相互访问,交互的能力,方便开发者使用C或者C++语言实现应用的关键功能。在应用中使用Native API会编译成动态库打包到应用中。

        个人理解:允许开发者用C/C++去编写一些功能函数,然后通过NAPI使得可以调用这些函数去完成特定的功能,如操作开发板中某个GPIO节点的状态(OpenHarmony并没有提供直接操作GPIO口状态的API),实现JS与C/C++不同语言模块之间的相互访问,交互的能力。

        2、目的优势:

(1)、OpenHarmony系统系统可以将框架层丰富的模块功能通过js接口开放给上层应用使用。

(2)、应用开发者也可以选择将一些对性能、底层系统调用有要求的核心功能用C/C++封装实现,再通过js接口使用,提高应用本身的执行效率。

二、创建含NAPI的Openharmony工程

        在进行OpenHarmony应用开发时,若要调用自己编写的NAPI函数,则必须建立一个支持NAPI的OpenHarmony工程。

        在DevEco Studio 3.0 Release版本中,OpenHarmony工程创建有自带了一个Native C++ hello的模板,我们只需新建该模板的一个工程即可,如下图所示。

### 配置 NAPI 支持 为了使 OpenHarmony 工程能够支持并调用自定义的 NAPI 函数,需按照特定流程设置工程环境。这不仅涉及基础项目的搭建,还包括必要的文件配置。 #### 创建新项目 通过 DevEco Studio 可以轻松创建一个新的 NAPI 工程。启动 IDE 后选择新建项目选项,在向导中指定目标设备为轻量级系统或标准系统,并勾选启用 NAPI 功能[^1]。 #### 修改 `config.json` 文件 对于已存在的项目,确保其根目录下的 `config.json` 中包了 `"napi": true` 的字段声明,以此表明该应用程序具备原生接口访问权限[^2]。 ```json { "appInfo": { ... }, "module": [ { "name": "entry", "type": "page", "srcEntrance": "./ets/index.ets", "abilities": [], "resources": {}, "js": ["./common/**/*.ts"], "napi": true, ... } ] } ``` #### 编写 C/C++ 代码 进入 `cpp` 子文件夹编写业务逻辑所需的本地模块实现。这里可以放置头文件(.h),源文件(.c 或 .cpp)以及构建脚本(build.gn)[^3]。 #### 更新依赖关系 为了让 TypeScript 更好地理解新增加的功能组件,应在 `entry/oh-package.json5` 内部添加对外暴露 API 接口描述文档(d.ts)作为外部库引用的一部分[^4]: ```json5 // oh-package.json5 { dependencies: { "@ohos/my-napi-module": "^0.0.1" } } ``` 完成上述步骤之后,即可顺利集成基于 Node-API 构建的服务端点至前端页面之中,从而充分利用底层硬件资源执行复杂运算任务的同时保持良好的用户体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值