谷歌收录网站,html5经典网站,如何做网页推广的网页,中国建设工程信息网站文章目录 Native适配开发三方库的基本使用 #x1f3e1;作者主页#xff1a;点击#xff01;
#x1f916;HarmonyOS专栏#xff1a;点击#xff01;
⏰️创作时间#xff1a;2024年12月09日11点12分 Native适配开发 Node-API HarmonyOS Node-API 是 HarmonyOS 提供的… 文章目录 Native适配开发三方库的基本使用 作者主页点击
HarmonyOS专栏点击
⏰️创作时间2024年12月09日11点12分 Native适配开发 Node-API HarmonyOS Node-API 是 HarmonyOS 提供的ArkTS JS C C 跨语言调用的接口在Node.js提供的Node-API基础上扩展而来的但与其并不完全兼容 ArkTS Native Module 是提供给开发者使用 Node-API开发的模块主要用于实现 Native 侧业务逻辑ModuleManager管理对象模块ArkTS调用C时会加载Native侧到ModuleManager转换为ArkTS对象返回上层ScopeManager用于管理 napi_value 生命周期napi_value 是Node-API独特的数据类型类似于ArkTS 中的 number、string等各种数据类型的统一表现形式在 Native 代码开发中不需要感知不同的数据类型统一都是 napi_valueReferenceManager用于管理引用开发时遇到的跨进程场景这时就需要创建引用 napi_ref否则就会被垃圾回收掉。napi_ref用于指向napi_value允许用户管理 napi_value 的生命周期Native Engine作用主要统一ArkTS引擎在 Node-API 接口行为 Node-API关键交互流程 模块初始化 ArkTS侧在import一个so库的时候先找到ArkTS引擎之后会加载模块到 ModuleManager对应就是dlopen函数注意知识首次调用时加载多次import会去缓存找之后ModuleManager把模块信息返回ArkTS引擎。ArkTS拿到模块信息后在native层触发模块注册初始化模块之后调用C的方法 函数调用 ArkTS通过上述import返回对象调用方法ArkTS引擎会找到并调用对应的C/C方法 Node-API数据类型 napi_status枚举数据类型napi_value独特的数据类型类似于ArkTS中的number、String类型napi_env表示Node-API执行时上下文传递函数中Node-API接口。退出Native侧时napi_env将失效napi_callback_infonative侧函数的入参保存ArkTS侧参数信息传递给napi_get_cb_info()函数获取ArkTS侧入参信息 Node-API接口 napi_get_cb_info给定的napi_callback_info 中获取有关调用的详细信息napi_get_value_double获取给定ArkTS的number类型值napi_create_string_utf8通过UTF8编码的C字符串数据创建ArkTS侧string类型的数据 Node-API典型场景开发 使用Node-API进行同步任务开发 应用侧在调用Native接口后将会被阻塞等待Native侧计算结果 使用Node-API进行异步任务开发 应用侧在调用Native接口后会收到临时结果并继续执行UI操作Native侧将异步执行业务逻辑不阻塞应用侧 使用Node-API进行线程安全开发 ArkTS天然线程安全而Native侧代码需要开发者自行保障线程安全Native侧C子线程不可跨线程直接访问 ArkTS 对象Node-API提供了可保障线程异步执行与通信安全的机制——线程安全函数 三方库的基本使用 ohpm下载 ohpm安装完成之后在安装的根目录下面 oh-package.json5文件中可找到 ohos/lottie的配置信息在oh_modules下的 ohos 目录找到包的存放位置 构建渲染上下文renderingContext为构建的上下文准备JSON文件文件中描述了动画具体路径关联画布创建Canvas绑定renderingContext并且需要给画布设置一个初始图片背景加载动画传入之前定义的 Canvas、上下文、JSON文件