讨论广场 问答详情
在Native侧进行跨模块加载
HarmonyOS码上奇行 2024-06-14 10:49:29
8 评论 分享

如题

8 评论 分享
写回答
全部评论(1)
1 楼

核心代码解释

napi_load_module_with_info(napi_env env, const char* path, const char* module_info, napi_value* result);

napi_load_module_with_info参数说明:

参数

说明

env

当前的虚拟机环境

path

加载的文件路径或者模块名

module_info

bundleName/moduleName的路径拼接

result

加载的模块

  1. bundleName表示AppScope/app.json5中配置的工程名。
  2. moduleName指的是待加载模块所在的HAP下module.json5中配置的名字。
  3. napi_load_module只局限于在主线程中进行模块加载。

entry模块。

static napi_value loadModule(napi_env env, napi_callback_info info) {
  napi_value result;
  // 1. 使用napi_load_module_with_info加载har模块
  napi_status status = napi_load_module_with_info(env, "myhar", "com.example.load_har/entry", &result)
  napi_value testFn;
  // 2. 使用napi_get_named_property获取test函数
  napi_get_named_property(env, result, "test", &testFn);
  napi_value inputargs[2];
  int32_t a=3,b=1;
  napi_create_int32(env, a, &inputargs[0]);
  napi_create_int32(env, b, &inputargs[1]);
  // 3. 使用napi_call_function调用函数test
  napi_value output;
  napi_call_function(env, result, testFn, 2, inputargs, &output);
  return output;
}

har模块的Index.ets。

export function test(a:number,b:number){
  let c = a-b
  console.log("%d - %d = %d",a,b,c)
}

效果:

 

 

2024-06-14 10:50:43