当前位置: 首页 > ai >正文

鸿蒙NDK开发技巧之-----HAP包如何引入HSP包后,如何给HSP的包传递上下文

在一个NDK 项目的创建以后会有你看napi_init.cpp 文件中会默认创建这个方法:

EXTERN_C_START
static napi_value Init(napi_env env, napi_value exports) {
napi_property_descriptor desc[] = {
{“add”, nullptr, Add, nullptr, nullptr, nullptr, napi_default, nullptr},}
napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
setHspEnv(env);
return exports;
}
其中napi_env env, 就是他的上下文,napi_env 是一个核心参数,用于表示 Node.js 环境的句柄。它是与 JavaScript 运行时交互的桥梁,用于创建、操作和访问 JavaScript 对象,以及处理异常、内存管理等。
那么在hsp 包中很多的方法也需要这个,怎么从Hap 包里面进行传递呢?

可以在hsp 的头文件中定义一个宏定义和传值的方法例如:
在hsp_napi.h 文件中写入
#ifndef CROSSMODULEREFERENCE_NAPI_HSP_H
#define CROSSMODULEREFERENCE_NAPI_HSP_H
#include <js_native_api_types.h>
#include
napi_env main_env;
void setHspEnv(napi_env env);

#endif //CROSSMODULEREFERENCE_NAPI_HSP_H
在hsp_napi.cpp 源文件中实现:
void setHspEnv(napi_env env) {
main_env = env;
}
那么在源文件其他的方法中使用的时候就使用 main_env 这个宏定义就可以

http://www.xdnf.cn/news/15193.html

相关文章:

  • 非欧几里得空间图卷积算子设计:突破几何限制的图神经网络新范式
  • 从LLM到VLM:视觉语言模型的核心技术与Python实现
  • 如何搭建一个高质量的开放接口平台
  • 顺序队列和链式队列
  • HTML(上)
  • 混合精度训练:梯度缩放动态调整的艺术与科学
  • day4--上传图片、视频
  • AI软件出海SEO教程
  • 从 Spring 源码到项目实战:设计模式落地经验与最佳实践
  • nginx反向代理实现跨域请求
  • 基于springboot+Vue的二手物品交易的设计与实现
  • ABP VNext + OpenTelemetry + Jaeger:分布式追踪与调用链可视化
  • C语言32个关键字
  • WebGL简易教程——结语
  • 可穿戴智能硬件在国家安全领域的应用
  • Openpyxl:Python操作Excel的利器
  • 10. 垃圾回收的算法
  • JVM 中“对象存活判定方法”全面解析
  • java单例设计模式
  • 小白入门:通过手搓神经网络理解深度学习
  • 6. JVM直接内存
  • 机器学习(ML)、深度学习(DL)、强化学习(RL)关系和区别
  • Linux之如何用contOs 7 发送邮件
  • LeetCode 3169.无需开会的工作日:排序+一次遍历——不需要正难则反,因为正着根本不难
  • 【Modern C++ Part9】Prefer-alias-declarations-to-typedefs
  • 【PTA数据结构 | C语言版】出栈序列的合法性
  • 使用FastAdmin框架开发二
  • Python 实战:构建 Git 自动化助手
  • 昇腾FAQ-A06-行业应用MindX相关
  • hiredis: 一个轻量级、高性能的 C 语言 Redis 客户端库