HarmonyOS鸿蒙Next中一个har是否可以直接调用另外一个har里的so

HarmonyOS鸿蒙Next中一个har是否可以直接调用另外一个har里的so

har调用另外一个har中的so,无法调用

问题场景描述:

一个har中包含了6个C++的so库,我们想在另外一个har中直接动态调用这些so与java调用jni相同的方式。比如安卓:JAVA层可以任意定义位置JNI跟随C++动态库在加载动态库时注册JNI方法这种C++与JAVA是有中间隔离的。但是目前鸿蒙没有找到方法可以让ts导出与C++隔离。
3 回复

可以通过以下方式,配置调用包oh-package文件,调用har包中的so:

“dependencies”: { “library”: “file:…/library”, “library.so”: “file:…/library/src/main/cpp/types/liblibrary” }

更多关于HarmonyOS鸿蒙Next中一个har是否可以直接调用另外一个har里的so的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,一个har(HarmonyOS应用模块打包格式)不能直接调用另一个har里的so(共享对象库)。har主要用于封装应用的能力和资源,而so通常用于封装底层的C/C++代码。在HarmonyOS的设计中,har之间的隔离性较强,无法直接访问其他har的内部资源,包括so文件。

如果需要在不同的har之间共享so,可以通过以下几种方式实现:

  1. 使用HarmonyOS的公共库:将so文件打包到公共库中,并通过依赖管理的方式让多个har共享该公共库。

  2. 通过Service Ability:将so的功能封装在Service Ability中,其他har通过调用Service Ability来间接使用so的功能。

  3. 使用HAP(HarmonyOS应用模块打包格式):将so文件放在HAP中,并通过HAP的依赖机制让多个har共享该so文件。

总之,直接调用另一个har里的so在HarmonyOS鸿蒙Next中是不支持的,需要通过上述间接方式实现共享。

在HarmonyOS鸿蒙Next中,一个HAR(HarmonyOS Ability Resources)不能直接调用另一个HAR中的SO(共享对象库)。HAR主要用于封装和共享资源、代码和UI组件,而SO库通常用于封装本地代码(如C/C++)。如果需要在HAR中使用SO库,可以将SO库打包到HAR中,并通过JNI(Java Native Interface)或NDK(Native Development Kit)进行调用。

回到顶部