HarmonyOS 鸿蒙Next 调用软总线so时找不到libsec_shared.so文件
HarmonyOS 鸿蒙Next 调用软总线so时找不到libsec_shared.so文件
这是strace app的日志。其中libsoftbus_client_run 是自己编译的so文件。
2687 open("/system/lib/libressched_client.z.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC <unfinished ...>
2687 open("/system/lib/module/libprompt.z.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC <unfinished ...>
2687 open("/system/lib/module/libhilog.z.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC <unfinished ...>
2687 open("/data/storage/el1/bundle/libs/arm/libsoftbus_client_run.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC <unfinished ...>
2687 open("/data/storage/el1/bundle/libs/arm/libsec_shared.z.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = -1 ENOENT (No such file or directory)
app启动后会奔溃 报错是
Error message: Cannot read property sessionServerInit of undefined
SourceCode:
this.sessionServerInitState = softbus_client_run.sessionServerInit(this.callbackPictureSave);
很奇怪的是为什么会去/data/storage/el1/bundle/libs/arm/ 找so文件。
按理说这libsoftbus_client_run 是app so吗?它没有权限去系统库里面找so文件吗?
更多关于HarmonyOS 鸿蒙Next 调用软总线so时找不到libsec_shared.so文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
so文件存放目录只在el1 下面有:data/app/el1/bundle/public/<bundle_name>/libs
关于arkTs加载so库问题可以参考该文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-ndk-21-V5
文档中提供了加载so库的具体步骤和实现demo
引用外部.so库分为两类
一、so为鸿蒙编译器编译,可在libs下创建一个架构文件夹,文件架构为:libs/架构名(arm64-v8a,armeabi-v7a,x86_64)/xxx.so
然后在ets侧进行引用,引用方式为:import {方法名} from ‘xxxx.so’
二、so为其他编译器编译,需要走适配流程,流程如下:
第一步,配置交叉编译环境,https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/Buildtools/README.md
第二步,移植三方库,https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/doc/ohos_use_sdk/OHOS_SDK-Usage.md
第三步,集成进项目,https://gitee.com/openharmony-sig/tpc_c_cplusplus/blob/master/lycium/doc/app_calls_third_lib.md
按照上方提供的方式。重新编译得到相关的头文件等。重新进行集成。完成上述问题的解决
更多关于HarmonyOS 鸿蒙Next 调用软总线so时找不到libsec_shared.so文件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next系统中调用软总线SO(Shared Object)文件时,若系统提示找不到libsec_shared.so
文件,这通常意味着该库文件未正确放置在系统的库搜索路径中,或者相关的库依赖关系未满足。
-
确认文件存在:首先,确保
libsec_shared.so
文件确实存在于你的项目或设备的某个目录中。可以在项目的libs目录或设备的/system/lib/或/vendor/lib/等目录下查找。 -
配置库搜索路径:如果文件存在,检查你的应用或系统的库搜索路径配置。在HarmonyOS中,你可能需要修改
build.gradle
(如果使用Gradle构建)或其他配置文件,以确保编译器和运行时知道在哪里查找这个库。 -
依赖管理:确保所有依赖该库的模块都已正确配置,并且版本兼容。在鸿蒙系统中,依赖管理通常通过manifest文件或类似的机制进行。
-
重新构建和部署:在修改配置后,重新构建你的项目并部署到设备上,以确保所有更改都已生效。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html