HarmonyOS 鸿蒙Next下cpp的so库怎么支持从网络加载并且使用呢?
HarmonyOS 鸿蒙Next下cpp的so库怎么支持从网络加载并且使用呢? cpp的so库怎么支持从网络加载并且使用呢?
更多关于HarmonyOS 鸿蒙Next下cpp的so库怎么支持从网络加载并且使用呢?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
这个看过了,没找到自己想要的,
有解决办法吗,我下载的so存到了 /data/storage/el2/base/files/test/test.so
目录下,dlopen
时失败:
[invalidDomain]dlopen_impl load library header failed for /data/storage/el2/base/files/test/test.so
dlopen
error: Error loading shared library /data/storage/el2/base/files/test/test.so: No error information—
然后想着写入到 /data/storage/el1/bundle/libs/arm64/test.so
,又没有权限。
后面我没有试,暂时先搁浅了,对我优先级不高。
不过从文档上,暂时就是这一种方法支持加载网络so。就是自己建立一个本地的so, 在将网络so下载下来,在通过本地的so里面的代码实现通过dlopen加载打开使用网络下载的so。
如果要是失败了,最好问下鸿蒙客服,没准存在bug,让他们看下,反正当时他们说的也是这样的一种下载使用方式。
我现在就是不晓得网络下载的so库,存到哪个目录下呢。卡死了,
问问鸿蒙客服,我的 so
的需求延期了,我还没有到你这步。之前只是去了解了怎么实现。
现在 so
不仅仅是客户端集成方式需要改,而且鸿蒙有自己的类似 JNI
那样的 api
,so
也得重写,动起来太麻烦了。
没准鸿蒙客服会给你一个 demo
,或者是告诉你暂时不支持;,
华为好像不支持除了libs 之外的路径 加载
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17
支持往libs目录里面写吗?
使用第三方库
在HarmonyOS(鸿蒙)系统中,若要使C++的.so
库支持从网络加载并使用,这通常涉及到动态加载库的技术。以下是一个简要说明:
HarmonyOS支持使用dlopen
和dlsym
等POSIX标准的动态加载函数。然而,直接从网络加载.so
库并不常见,且可能涉及安全问题。一般做法是先将库文件下载到本地临时目录,再进行加载。
步骤概述:
-
下载库文件:使用网络请求(如HTTP或HTTPS)将
.so
库文件下载到设备的某个临时目录。 -
加载库文件:使用
dlopen
函数加载下载好的.so
库文件。例如:void* handle = dlopen("/path/to/downloaded/library.so", RTLD_LAZY); if (!handle) { // 处理加载失败的情况 }
-
获取函数指针:使用
dlsym
函数获取库中函数的地址,并调用这些函数。 -
关闭库:使用完库后,使用
dlclose
函数关闭库。
注意事项:
- 确保下载的文件是可信的,避免安全漏洞。
- 处理好错误情况,如网络请求失败、文件下载不完整、库加载失败等。
- 考虑库的依赖关系,确保所有依赖库都已正确加载。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,