HarmonyOS 鸿蒙Next .so的引用demo

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next .so的引用demo

1.首先鸿蒙工程里面有c++对应的创建方式,其中的.so文件就可以用来进行外部引入

类似的过程你可以参考一下c++创建的工程案列,因为鸿蒙不支持java了,所以jni文件你要用对应的c或者c++工程改造,原有的c和c++使用的.so文件可以不用动。

分享一下鸿蒙调用c++传输字符串的demo | 华为开发者联盟 (huawei.com),里面有简单的使用

2.引入过程,拷贝对应的.so文件到对应的目录下,图一为原文件,复制到图二的工程文件中libs下面直接放对应的文件,不用加default,图三,图四是.so文件在ts中的引入配置,图5是总文件里面的配置

cke_3694.pngcke_4250.pngcke_9088.png

cke_9743.pngcke_10484.png

19 回复
大佬,图三中的libvalidate文件夹是自己新建的吗?能给个git或者gitee参考下吗?

这个是我自己重新命名的,你新建立一个c++的工程就明白了,里面有对应的文件目录,和我的差不多,就是名字不一样。

我新建了一个鸿蒙c++工程,产出了so(entry/build/libs里取到,比如a.so),然后我又建了一个普通的鸿蒙工程,我可以直接在新工程里使用a.so嘛?还是我新工程也必须是鸿蒙c++工程?

普通工程就行,但是对应的引入文件必须要一定过去

楼主能给个Demo例子么?

楼主大佬,如果有个旧版Android项目的libxx.so,能怎么引入使用呢?

看了你的例子,好像是在c++产出新的so,没看懂怎么引入旧版Android项目的so

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

旧项目的.so文件,你要和ATS关联起来,就需要引用到他对应的文件,你可以理解成为鸿蒙—c++ c++关联旧项目,配置文件 “name”: “libvalidate.so”, “types”: “./index.d.ts”,types配置的.ts文件里面就是需要关联的方法

大佬能否提供一个完整的demo学习一下,感谢~

cke_175.png
这用操作后会出现这种问题?

辛苦楼主能否把这个过程细化一下,感觉就差临门一脚了,执行的时候碰到跟楼上一样的问题。

cke_3689.png

今天找华为的工程师帮忙看了一下,把libc++_shared.so 也copy过来就可以了,总结一下流程

cke_1243.png

直接按图这样使用就可以了

第一步:创建Native C++工程编译生成so和napi文件 第二步:创建普通工程,拷贝第一步的产物按截图拷贝到对应目录,运行报错。 能否发下上面的demo工程,是不是本地缺少什么配置

报什么错,第一步和第二步是不同的工程吧,shareC++.so copy过去了吗

20240329-114320.jpglibc++_shared.so和libentry.so是使用Native C++工程直接编译生成的so,导入普通工程后按上面流程接入调用后报错

你改一下 entry/src/oh-package.json5, 加上dependencies试试,下面是我的。不过我测试我不加这个也能过去。

{ “name”: “entry”, “version”: “1.0.0”, “description”: “Please describe the basic information.”, “main”: “”, “author”: “”, “license”: “”, “dependencies”: { “@types/libdpsdk.so”: “file:./src/main/ets/libdpsdk” } }

找到问题了,是ide的原因公司申请鸿蒙使用未发版的ide 4.1.3.600 会出现这个问题。有点坑啊

你好,ide使用哪个版本可以正常

回到顶部