HarmonyOS HAR 包中的 so 如何用 Node API 加载该 HAR 包中的 ArkTS 模块

相关文档中有描述通过 Node API 加载系统及应用 ArkTS 模块的方法。但由于我们 SDK 是通过 HAR 包形式提供给客户集成到他们应用中的,通过

napi_load_module(env, "ets/GeeGuard", &result)

加载 HAR 包内 ArkTS 模块会报找不到模块。

ReferenceError: Cannot find module 'com.example.geeguardharmonyos/entry/ets/GeeGuard' , which is application Entry Point@1935393b`

通过错误信息推测是 HAR 包合入应用内后,napi 加载模块是以应用而非 HAR 包的模块结构为准的。请问这种情况下该如何加载 HAR 包中的 ArkTS 模块呢?

项目的大致结构如下树形图标识:

├── entry 
│   ├── oh_modules 
│   │   └── geeguard -> ../../geeguard 
│   └── src 
│       ├── main 
│           ├── ets 
│           │   ├── entryability 
│           │   │   └── EntryAbility.ets 
│           │   └── pages 
│           │       └── Index.ets 
│           └── module.json5 
└── geeguard 
├── oh_modules 
│   └── libgeeguard.so -> ../src/main/cpp/types/libgeeguard 
└── src 
└── main 
├── cpp 
│   ├── CMakeLists.txt 
│   └── xxx.cpp 
├── ets 
│   └── GeeGuard.ets 
└── module.json5

具体到该项目结构中,想在 libgeeguard.so 中调用 geeguard/src/main/ets/GeeGuard.ets。

HarmonyOS
2024-09-11 12:17:21
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

加载路径的时候需要把路径拼写。

let module:ESObjext = testNapi.loadModuleWithInfo("har/src/main/ets/Calc", "com.example.moduleinfo/entry") ; 
"buildOption": { 
  "arkOptions": { 
    "runtimeOnly": { 
      "sources": [ 
      "./src/main/ets/Calc.ets" 
      ] 
    } 
  } 
}
分享
微博
QQ
微信
回复
2024-09-11 15:12:59
相关问题
HarmonyOS har引用so问题
544浏览 • 1回复 待解决
har集成怎么配置so架构
396浏览 • 1回复 待解决
HAR里子窗口无法加载页面
688浏览 • 1回复 待解决
HarmonyOS HAR之间路由跳转
678浏览 • 1回复 待解决
获取 har 相关信息
264浏览 • 1回复 待解决
HarmonyOS har依赖问题
745浏览 • 1回复 待解决
HarmonyOS har体积增大
86浏览 • 1回复 待解决
从HAP如何区分是HAR和HSP
2076浏览 • 1回复 待解决
HarmonyOS HAR如何生成BuildProfile
107浏览 • 1回复 待解决